簡體   English   中英

SQL 得到 Select 中某列的總和

[英]SQL get sum of a Column in Select

我有一張如下圖所示的表格。

+------+-------+
|  id  | value |
+------+-------+
| 1    | 5     |
+------+-------+
| 2    | 9     |
+------+-------+
| 1    | 8     |
+------+-------+
| 3    | 10    |
+------+-------+

我希望能夠 select 三個具有最高value的條目。 但是,我希望將 id 分組並將值相加。 這是所需的 output:

+------+-------+
|  id  | value |
+------+-------+
| 1    | 13    |
+------+-------+
| 3    | 10    |
+------+-------+
| 2    | 9     |
+------+-------+

目前,我有這個代碼: SELECT * FROM table GROUP BY id ORDER BY SUM(value) DESC LIMIT 3它能夠選擇前三行(按value列排序)並按 id 分組。 但是,它返回最高value ,而不是將它們加在一起,如下所示。

+------+-------+
|  id  | value |
+------+-------+
| 1    | 8     |
+------+-------+
| 3    | 10    |
+------+-------+
| 2    | 9     |
+------+-------+

我應該使用什么來將SELECT語句中的value列相加?

你可以做:

select *
from (
  select id, sum(value) as total from t group by id
) x
order by total desc
limit 3

或者...在壓縮語法中:

select id, sum(value) as total from t group by id order by total desc limit 3

請參閱DB Fiddle上的運行示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM