[英]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.