My SQL-DW组队学习6??
2021/9/28 19:13:46
本文主要是介绍My SQL-DW组队学习6??,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
练习一
思路:先将两表连结,再在分组中取最大值后连结
select e.employee,e.salary,d.department_name department from Employee as e join Department as d on e.departmentid=d.department_id;
之后就不会了,连结给我整懵了。。。
正确答案:
SELECT Department.name AS 'Department', Employee.name AS 'Employee', Salary FROM Employee JOIN Department ON Employee.DepartmentId = Department.Id WHERE (Employee.DepartmentId , Salary) IN ( SELECT --有可能有多个员工同时拥有最高工资,所以最好在这个查询中不包含雇员名字的信息 DepartmentId, MAX(Salary) FROM Employee GROUP BY DepartmentId ) ;
有句话特别重要:有可能有多个员工同时拥有最高工资,所以最好在这个查询中不包含雇员名字的信息。
练习二
思路:偶数上移一位,奇数下移一位,如果最后一位是奇数,则不变。
我想用if实现,感觉if比case...when...then写起来更简便。
我瞎写的 区分奇偶使用了%2,即取余;如果n%2=0,则说明n是偶数。
select if (id%2=0,id=replace(id,id,id-1),id=replace(id,id,id+1))as id,student from seat;
leecode评论区答案,膜!希望有朝一日我也这么牛X
select if (id%2=0, id-1, if(id=(select count(id) from seat),id,id+1)) as id , student from seat order by id asc;
我写的太麻烦了,用replace简直大材小用了,答主的if嵌套用的好熟练。。。
MYSQL中IF:
IF(X,A,B)
如果X为True,则返回A,否则,返回B
练习三
思路:dense_rank排序+窗口函数
select score as "Score",DENSE_RANK() over(order by score DESC) as "Rank" from Scores;
让我不太李姐的是leecode的重要提示:对于 MySQL 解决方案,如果要转义用作列名的保留字,可以在关键字之前和之后使用撇号。例如 `Rank`,或许李姐会理解?
练习四
select count(case when a.Num >= b.Num then count()+1 else count()=0 end) as ConsecutiveNums from Logs as a left join Logs as b on a.Num >= b.Num ;
这篇关于My SQL-DW组队学习6??的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-30java最新版本是什么,有什么特性?-icode9专业技术文章分享
- 2024-11-30[开源]27.8K star!这款 Postman 替代工具太火了!
- 2024-11-30Gzip 压缩入门教程:轻松掌握文件压缩技巧
- 2024-11-29开源工具的魅力:让文档管理更“聪明”
- 2024-11-29Release-it开发入门教程
- 2024-11-29Rollup 插件入门教程:轻松掌握模块打包
- 2024-11-29从零到一,产品经理如何玩转项目管理和团队协作
- 2024-11-29如何通过精益生产管理工具帮助项目团队实现精准进度控制?
- 2024-11-29低代码应用开发课程:新手入门与基础教程
- 2024-11-29入门指南:全栈低代码开发课程