假设我有下表
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)
j5fpnvbx1#
使用ctename as(选择id,sum(salary)作为testtable group by id中的total\ salary)从ctename order by total\ salary desc中选择前1个id
5lwkijsr2#
如果你真的只期望/需要一个 id 组,然后使用 LIMIT 可能是这里最直接的方法:
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 分析函数:
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;
2条答案
按热度按时间j5fpnvbx1#
使用ctename as(选择id,sum(salary)作为testtable group by id中的total\ salary)从ctename order by total\ salary desc中选择前1个id
5lwkijsr2#
如果你真的只期望/需要一个
id
组,然后使用LIMIT
可能是这里最直接的方法:如果最高工资能有联系,那么我们就需要做更多的工作。在mysql 8+之前,@mkhalid给出的查询是我们需要做的。从mysql 8+开始,我们可以使用
RANK
分析函数: