SQL练习7: 查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
题目链接:牛客网
题目描述
查找薪水变动超过15次的员工号emp_no
以及其对应的变动次数t
。
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
解法
根据题目要求,首先明确查询的结果中包含emp_no
,以及变动次数t。使用count
函数和group by
分组可以统计变动次数。题中要求查找变动超过15次的员工号,那么就应该要求同一个emp_no
的salary
有存在至少16条,因为从第二条记录开始才算有涨幅,无论是涨幅的正负性。但实际提交的时候发现题中貌似没有考虑这一问题。
SELECT emp_no, count(salary) t
FROM salaries
GROUP BY emp_no
HAVING t > 15