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过滤组)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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工具