我有一个员工工资数据库。
以下是Salaries
表格字段:
emp_no INT(11)
salary INT(11)
from_date DATE
to_date DATE
我正在努力获得前十名员工工资,非重复员工。使用下面的代码,我可以获得emp_no的最大工资,但是我的from_date和to_date默认为该emp_no的最早日期值。
select emp_no, max(salary) as salary, from_date, to_date
from salaries
group by emp_no
order by salary DESC
limit 10
我假设GROUP BY
会保留与薪水和emp_no
相匹配的日期值,但在考虑一下之后,它就没有意义。
非常感谢任何有关如何获取正确日期值的帮助。
答案 0 :(得分:1)
第一张表格将包含前十名薪水。
然后检查原始表格以查看与emp_no
和salary
匹配的行以获取日期。
SELECT S.*
FROM
(SELECT emp_no, max(salary) as salary
FROM salaries
GROUP BY emp_no
ORDER BY salary DESC
limit 10
) maxSal
INNER JOIN salaries S
ON maxSal.emp_no = S.emp_no
AND maxSal.salary = S.salary