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

建表语句如下:
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`));
请你查找薪水变动超过 15 次的员工号 emp_no 以及对其对应的变动次数 t ,上述示例查询结果如下:

答案解析
根据分析题目与示例的查询结果,我们可以知道题目的隐含信息:
- 从第一条记录起,即算一次涨幅
- 如果多条记录的 SALARY 字段值相同,那么理应仅算一次涨幅
我们可以使用 分组(GROUP BY ) + 聚合函数(COUNT()) 来解决本问题
同时因为,我们要去除同一位员工 SALARY 相同的记录,所以需要使用 DISTINCT 语句
_SQL 语句如下:
SELECT emp_no,COUNT(DISTINCT salary) AS tFROM salariesGROUP BY emp_noHAVING t > 15;
