题目要求查找薪水变动超过15次的员工号emp_no以及其对应的变动次数 t 。

个人思路:对emp_no分组可以看到不同emp_no对应的数据。count(distinct salary) as t 计算对应emp_no的不同salary次数另命名为 t。以上为临时表T1作为新的数据源,查询出t>15的结果集.

注意:这道题最大的帮助是让我特意去查了一下MysQL查询的执行顺序:
开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果​

select *
from (
    select emp_no,count(distinct salary) as t
    from salaries
    group by emp_no
    ) as T1
where t>15

二刷: 实际上group by 后面直接加having是可以的。重新复习了一下知识点:
groupby子句常见错误
1)SELECT 子句中只能存在以下三种 元素。

●常数 ● 聚合函数 ● GROUP BY子句中指定的列名(也就是聚合键)
2)where子句中不能使用聚合函数
聚合函数可以再select,having,order by之后出现
where指定分组之前数据行的条件,having子句用来指定分组之后条件

select emp_no,count(distinct salary) as t
from salaries
group by emp_no
HAVING t >15