8

找出所有员工当前薪水salary情况

http://www.nowcoder.com/questionTerminal/ae51e6d057c94f6d891735a48d1c2397

题目:找出所有员工当前(to_date=‘9999-01-01’)具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示

方法1:distinct+order by
select distinct salary
from salaries
where to_date='9999-01-01'
order by salary desc;

方法2:distinct+order by
select salary
from salaries
where to_date='9999-01-01'
group by salary
order by salary desc;
补充:WHERE语句在GROUP BY语句之前,SQL会在分组之前计算WHERE语句。HAVING语句在GROUP BY语句之后,SQL会在分组之后计算HAVING语句。

说明:
对于distinct与group by的使用:
1.当对系统的性能高并且数据量大时使用group by
2.当对系统的性能不高时或者使用数据量少时两者借口
3.尽量使用group by

全部评论
为什么要加where to_date='9999-01-01' 这个过滤条件呢?
9 回复 分享
发布于 2021-02-24 00:01
反手就是一个赞,前几天数据分析师说,数据量很大情况下,能用group by就不要用distinct,恰巧在这看到了解释。
4 回复 分享
发布于 2022-03-05 20:44
没有说所有在职的员工,所有员工是包括在职和离职的,所以条件可以不用加吧
3 回复 分享
发布于 2021-06-19 21:07
方法2应该是,group by+order by 吧
1 回复 分享
发布于 2021-07-30 09:33
请问这道题后面为什么一定要用oder by 排序呢?为什么不用oder by salary desc就提交不上去呢?
1 回复 分享
发布于 2021-06-09 22:24
如果两个人薪水一样 直接按照薪水分组 还是查所有人的薪水吗
1 回复 分享
发布于 2021-06-08 08:26

相关推荐

一面052350min1.自我介绍2.在学校里的经历3.你希望测试开发岗位里的测试工作和开发工作占比是多少?4.实习拷打,详细拷打实习中做过的接口自动化项目5.为什么接口自动化项目选择pytest?6.设计测试用例会考虑哪些点?7.用过jekins的什么功能,了解过它底层的实现吗8.技术栈是?熟悉的编程语言?9.口述思路:二叉树的遍历10.手撕:二分查找11.浏览器输入url到展示页面的全流程?12.进程和线程13.死锁14.慢查询15.读过有关测试的技术书籍吗16.写测试自动化时用过python的哪些库?17.反问(作业帮直播业务,给学生直播上课之类的) 二面052755min1.自我介绍2...
一笑而过2222:1. String和StringBuffer区别:String是不可变、线程安全(因不可变特性)的,每次操作会创建新对象,适合只读场景;StringBuffer是可变、线程安全(方法加锁)的,可直接修改对象,适用于多线程环境下频繁修改字符串的场景 。 2. Java的垃圾回收器:Java垃圾回收器是JVM自动管理内存的组件,基于分代收集理论,通过标记-清除、复制、标记-整理等算法回收不再使用的对象,常见类型有Serial、Parallel、CMS、G1等,分别适用于不同性能需求场景。 3. Java的序列化:Java序列化是将对象转换为字节序列以便存储或传输的机制,对象所属类需实现Serializable接口,反序列化可将字节流恢复为对象,常用于分布式通信、数据持久化和对象深拷贝等场景。
查看24道真题和解析 面经...
点赞 评论 收藏
分享
评论
103
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务