sql算法练习——找出所有员工薪水情况(去重)

题目:

找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示
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`));

代码:

1 select salary from salaries
2 where to_date = '9999-01-01'
3 group by salary
4 order by salary desc;

笔记:

  在大表中 distinct 的效率不高,所以大数据量的时候都被禁止使用,建议使用 group by解决重复问题。

  distinct相当于哈希表,将所有数据加载进来,时间复杂度低,空间复杂度高,

  group by是排序,时间复杂度高,空间复杂度低。

  WHERE语句在GROUP BY语句之前,SQL会在分组之前计算WHERE语句。(WHERE过滤行)
  HAVING语句在GROUP BY语句之后,SQL会在分组之后计算HAVING语句。(HAVING过滤组)

posted @   John_yan15  阅读(382)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示