题目描述
有一个薪水表,salaries 简况如下:

请你查找薪水记录超过 15 次的员工号 emp_no 以及其对应的记录次数 t,以上例子输出如下:

考察知识点
GROUP BY,HAVING。
解题思路
1️⃣ 根据题目要求,首先明确查询的结果中包含 emp_no,以及变动次数 t 。使用 count 函数和 group by 分组可以统计变动次数。
SELECT emp_no, count(salary) t
FROM salaries
GROUP BY emp_no
HAVING t > 15
2️⃣ 之前题目是要求统计涨薪超过 15 次员工 emp_no 和次数 t,所以上面的肯定是行不通的,真正的涨幅一般都是正数,并且第二次开始才算一次涨幅,所以应该按照下面的写法来查询。
SELECT s1.emp_no, COUNT(s1.salary) AS t
FROM salaries AS s1 INNER JOIN salaries AS s2
ON s1.emp_no = s2.emp_no AND s1.to_date = s2.from_date
WHERE s1.salary < s2.salary
GROUP BY s1.emp_no
HAVING t > 15
题目来源:牛客网-SQL数据库实战题
✅ 每日打卡,❤ 点个赞再走吧!!!❤
后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。

1875



被折叠的 条评论
为什么被折叠?



