【Mysql】查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t

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

http://www.nowcoder.com/questionTerminal/6d4a4cff1d58495182f536c548fee1ae

题目要求查找薪水变动超过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
牛客题霸-SQL篇【Mysql】 文章被收录于专栏

少壮不努力,老大勤刷题

全部评论
group by 后面直接having筛选不可以吗?
2 回复 分享
发布于 2021-05-07 21:05
MysQL查询的执行顺序应该是这样的: FROM子句->WHERE子句->GROUP BY子句->HAVING子句->SELECT子句->ORDER BY子句->LIMIT子句
2 回复 分享
发布于 2022-03-01 20:42
你这个是对的,
1 回复 分享
发布于 2021-03-09 22:00
distinct salary,万一薪水一样呢?
1 回复 分享
发布于 2022-06-10 19:03
如果group by(emp no)结果有啥不一样吗?
1 回复 分享
发布于 2022-06-10 19:05
你那个去重多此一举吧
点赞 回复 分享
发布于 2022-04-07 21:42
from子查询后面的T1不写为什么会通不过呢
点赞 回复 分享
发布于 2023-12-02 09:23 山东

相关推荐

评论
17
3
分享

创作者周榜

更多
牛客网
牛客企业服务