假设我有下表
id Salary 1 5 2 3 1 3 1 6 2 5 3 5 3 2 4 1 4 3 2 9
我想从所有组中获得最高总薪水的ID。在这种情况下,结果应为id = 2 sum = 17(即3 + 5 + 9 = 17)
答案 0 :(得分:4)
如果您真的只希望/需要一个id
组,那么在这里使用LIMIT
可能是最简单的方法:
SELECT id, SUM(Salary) AS total
FROM yourTable
GROUP BY id
ORDER BY SUM(Salary) DESC
LIMIT 1;
如果可能与最高薪水有联系,那么我们将需要做更多的工作。在MySQL 8+之前,@ MKhalid给出的查询是我们需要做的。从MySQL 8+开始,我们可以使用RANK
分析函数:
SELECT id, total
FROM
(
SELECT id, SUM(Salary) AS total,
RANK() OVER (ORDER BY SUM(salary) DESC) rank
FROM yourTable
GROUP BY id
) t
WHERE rank = 1;
答案 1 :(得分:0)
使用CTEName AS (SELECT ID,SUM(salary)作为testTable中的total_salary 按ID分组) 从CTEName中选择排名靠前的1个ID,顺序为total_salary desc