如何从所有组中获取最高总数的id(mysql数据库)

uwopmtnx  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(326)

假设我有下表

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)

j5fpnvbx

j5fpnvbx1#

使用ctename as(选择id,sum(salary)作为testtable group by id中的total\ salary)从ctename order by total\ salary desc中选择前1个id

5lwkijsr

5lwkijsr2#

如果你真的只期望/需要一个 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;

相关问题