【发布时间】:2017-10-19 06:56:38
【问题描述】:
我有一个简单的员工表,我需要在其中找到每个部门中最高级别的两个薪水之间的差异。
我有表列:
dept,sal,rank
样本数据可以是
Dept Sal Rank
Finance 10000 1
Finance 20000 2
Finance 11000 1
Finance 15000 3
Finance 45000 4
Finance 42000 4
Operations 17000 1
Operations 12000 1
Operations 15000 2
Operations 19000 2
想要的输出是
Dept Diff Rank
Finance 3000 4
Operations 4000 2
我设法以非常低效的方式获取前 2 名记录。 我正在使用 mysql 服务器。
这里是查询
SELECT *
FROM emps s
WHERE
(
SELECT COUNT(*)
FROM emps f
WHERE f.dept = s.dept AND
f.rank >= s.rank
) <= 2
我需要进一步的帮助才能获得输出。
【问题讨论】:
-
查看添加的标签。或查看mysql.rjweb.org/doc.php/groupwise_max
标签: mysql database mariadb greatest-n-per-group