【发布时间】:2020-07-11 19:36:44
【问题描述】:
如何提取每个月最高奖金的所有员工?
我有桌子:
id_prem id_emp months premium
1 1 2016-01-01 00:00:00.000 3000
3 1 2016-01-01 00:00:00.000 2000
5 1 2016-03-01 00:00:00.000 3000
6 1 2016-01-16 00:00:00.000 3000
8 1 2016-01-11 00:00:00.000 2000
7 2 2016-02-14 00:00:00.000 5000
2 2 2016-02-01 00:00:00.000 5000
4 3 2016-02-01 00:00:00.000 1000
9 3 2016-02-09 00:00:00.000 1000
需要将每个员工每个月的奖金相加,得到最大的奖金 因此,只获得每月奖金最高的员工
我的查询:
SELECT id_emp, mon, MAX(sum_prem) as max_premium
FROM(SELECT id_emp, month(months) as mon, SUM(premium) as sum_prem FROM Employee.Emp_prem
GROUP BY id_emp, month(months))as t
GROUP BY id_emp, mon
结果:
id_emp mon max_premium
1 1 10000
2 2 10000
3 2 2000
1 3 3000
这不是正确的结果。
因此,我需要只显示每个月的最高奖金。
【问题讨论】:
-
大多数 DBMS 支持
RANK/ROW_NUMBER -
用您正在使用的数据库标记您的问题。
标签: sql sql-server