作为一个菜比,我开始挑战Leetcode
来源:互联网 发布:手机放电软件 编辑:程序博客网 时间:2024/05/22 06:42
2017/7/2 今天挑战了两道SQL相关的题
一个是很简单的两张表之间的关联查询 LEFT JOIN 就能搞定.
第二题也不算难,而且思路有多种
题目是这样的 :
+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+
求 : 排名第二的Salary
排第一或者最后一名当然很简单啦,不过就是 max() 和 min() 吗,当然求倒数第二位没有这么简单了.稍微绕一点
思路很多 : 第一种 我用的oracle 写的
select t.* from (SELECT MM."ID",Rank()Over(ORDER BY MM."ID" DESC) AS rank FROM M_TEAM MM) t WHERE rank<>1and ROWNUM <= 1
重点在 Rank()OVER() 思路,先排序,排序后去掉结果集中的第一名,再查询此时的第一名,当然就是第二名了
官网上点赞最多的答案 :
SELECT max(Salary)
FROM Employee
WHERE Salary < (SELECT max(Salary) FROM Employee)
非常简洁,效率应该比我那个要高点,很厉害
思路是一样的
作者自己指出这样查的话如果表中的Salary有null的存在并且刚好是排第二的,那么,返回的结果将是 null
网友的魔改 :
select IFNULL( (select distinct e1.salary from Employee e1
where (select count(distinct e2.salary ) from Employee e2 where e2.salary > e1.salary) = 1) , null)
啧啧,很厉害
今天就这样吧
阅读全文
0 0
- 作为一个菜比,我开始挑战Leetcode
- 作为一个遥远的开始
- 作为一个曾经看不上javascript的人,我推荐大家开始学习js
- 开始一个新的地方作为自己技术的心灵园田,新浪微博太伤我心了
- 作为一个运维工程师中的一员,现在开始我的博客之路.
- 以此作为我博客的开始
- 挑战开始
- 重新开始,作为一个新的起点
- 作为一项挑战
- 作为一个大学才开始入门学计算机编程的孩子想要的东西-----听我扯,你蛋疼,他菊紧,我开心
- 作为一个程序员,我常去的网站
- 我作为一个面试官的感想
- 作为一个程序员我最大的遗憾
- 微软Adam挑战Google Brain:我的机器学习比你快
- 明天开始java web的工作 作为一个实习生
- 作为一个程序的人,我觉得我应该努力学习
- 开始全新挑战
- 今天开始挑战pythonchalleng
- Java JVM/JMM/GCC剖析
- CSS核心概念再回顾
- 按小时统计数据
- 数据分析师面试常见的77个问题(答案会慢慢补充)
- 陈纪修老师《数学分析》 第07章:定积分 笔记
- 作为一个菜比,我开始挑战Leetcode
- MFC中常用数据类型之间的相互转换
- 浅谈Java中transient关键字的作用
- debian下设置开机自启动
- Java_基础—将文本反转
- SSH免密登陆
- Java IO 字节流 字符流操作
- 魅族手机AudioRecord报错。
- 官方及自定义线程池