LeetCode SQL
SQL查询练习一(From LeetCode)
1 select name,population,area
2 from World
3 where area > 3000000 or population > 25000000
3.判断是否是三角形(E)

思路,使用case when进行搭配,使用三角形定义进行判断x+y>z,x+z>y,y+z>x

1 select x,y,z,
2 case
3 when x+y>z and y+z>x and x+z>y then 'Yes'
4 else 'No'
5 end as triangle
6 from triangle

4.找出薪水第二高的员工

思路:先找出最多的薪水的员工,在把他的薪水小于最大的工资即可
1 select Max(Salary) as SecondHighestSalary
2 from Employee
3 where Salary < (select Max(Salary) from Employee)
5.找出每个学科都有多少名学生(M)

思路:将两张表进行左连接,一department表作为主表,然后按照dept_name进行分组,最后按照人数进行降序排列
1 select d.dept_name,count(student_id) as student_number
2 from department d left join Student s
3 on d.dept_id = s.dept_id
4 group by d.dept_name
5 order by student_number desc,d.dept_name
6.找出每个部门薪水最高的员工(M)

思路:将两张表进行连接,内层查询根据department表的name进行分组,每组的最大值,既是每个部门的薪水最大值,然后传递给外层的部门id和薪水即可

1 select d.Name as Department,e.Name as Employee,e.Salary as Salary
2 from Department d join Employee e
3 on e.DepartmentId = d.Id
4 where (e.DepartmentId,e.Salary) in
5 (
6 select DepartmentId,max(Salary)
7 from Employee
8 group by DepartmentId
9 )

7.找出至少有5名下属的领导(M)

思路:使用内层查询查找出有5名下属的ManagerId然后,将外层查询的员工Id=ManagerId就是查询的结果

1 select e1.Name
2 from Employee e1
3 join
4 (
5 select ManagerId from Employee
6 group by ManagerId
7 having count(*) >= 5
8 ) as e2
9 on e1.Id = e2.ManagerId

8.找出得票最多的候选人(M)

思路:先在内层查询中找出最受欢迎的候选人,然后将中间表的候选人Id既是赢家的候选人id,两者相等即可

1 select c.Name
2 from Candidate c
3 join
4 (
5 select CandidateId from Vote
6 group by CandidateId
7 order by count(*) desc
8 limit 1
9 ) as winner
10 on c.id = winner.CandidateId;

9.根据Score计算等级(M)

思路:将两张表进行自连接,根据Id进行分组,最后根据Rank进行排序
1 select s.Score,count(distinct t.Score) as Rank
2 from Scores s join Scores t
3 on s.Score <= t.Score
4 group by s.Id
5 order by Rank
10.找出二叉树的节点分布(M)

思路:使用case when的结构进行循环判断输出

1 select id,
2 case
3 when tree.id = (select atree.id from tree atree where atree.p_id is NULL)
4 then 'Root'
5 when tree.id in (select atree.p_id from tree atree)
6 then 'Inner'
7 else
8 'Leaf'
9 end as Type
10 from tree
11 order by id

11.找出每个部门薪水排前三名的员工(H)

思路:先进行表连接,将内层查询的结果和外部的表的Salary相比较,选择前面3个

1 select d.Name as Department,e.Name as Employee,e.Salary
2 from Employee e join Department d
3 on e.DepartmentId = d.Id
4 where 3 >
5 (
6 select count(distinct e2.Salary)
7 from Employee e2
8 where e2.Salary > e.Salary
9 and e.DepartmentId = e2.DepartmentId
10 )

12.找出2013-10-01到2013-10-03之间的网约车的取消率(H)


思路:计算取消率,使用case when语法,找出Trips中Status变量以canceled_开头的比例
13.找出每个部门员工薪水的中位数(H)

思路:将此表进行自关联,计算工资的中位数,使用case when计算中间表的中位数

1 select e.Id,e.Company,e.Salary
2 from Employee e join Employee aliens
3 on e.Company = aliens.Company
4 group by e.Company,e.Salary
5 having sum(case when e.Salary = aliens.Salary then 1 else 0 end) >=
6 abs(sum(sign(e.Salary-aliens.Salary)))
7 order by e.Id

LeetCode SQL的更多相关文章
- LeetCode SQL题目(第一弹)
LeetCode SQL题目 注意:Leetcode上的SQL编程题都提供了数据表的架构程序,只需要将它贴入本地数据库即可调试自己编写的程序 不管是MS-SQL Server还是MySQL都需要登陆才 ...
- [LeetCode]Sql系列4
##题目1 626. 换座位 小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id. 其中纵列的 id 是连续递增的 小美想改变相邻俩学生的座位. ...
- [Leetcode]Sql系列3
题目1 产品数据表: Products +---------------+---------+ | Column Name | Type | +---------------+---------+ | ...
- [LeetCode]Sql系列2
题目 1205. 每月交易II Transactions 记录表 +----------------+---------+ | Column Name | Type | +-------------- ...
- [Leetcode|SQL] Combine Two Tables
Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...
- LeetCode SQL: Second Highest Salary
, NULL, salary) as `salary` from ( ,) tmp Write a SQL query to get the second highest salary from th ...
- [LeetCode]Sql系列
题目1 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--------+--------------+ ...
- LeetCode SQL:Employees Earning More Than Their Managers
# Write your MySQL query statement below SELECT a.Name FROM Employee AS a INNER JOIN Employee AS b O ...
- leetcode 182. Duplicate Emails having的用法 SQL执行顺序
https://leetcode.com/problems/duplicate-emails/description/ 首先sql的执行顺序是 from-->where-->group b ...
随机推荐
- HTML页面直接显示json 结构
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- UltraEdit正則表達式介绍及实例
前几天,有个将Excel中的数据导入到数据库中的需求.原本想到用程序读取Excel中的数据并存储到数据库中,但经一哥们的提醒,说用 EditPlus或UltraEdit这种工具直接将数据拼凑成SQL插 ...
- DataTables warning: table id=dataTable - Requested unknown parameter 'acceptId' for row 0. For more
重点内容 DataTables warning: table id=dataTable - Requested unknown parameter 'acceptId' for row 0. For ...
- Keil5.15版本号
Keil5.15下载地址 http://pan.baidu.com/s/1kT6AGvX Keil5.15软件补丁下载地址 http://www.keil.com/dd2/pack/ Keil5.15 ...
- CSS3弹性布局内容对齐(justify-content)属性使用具体解释
内容对齐(justify-content)属性应用在弹性容器上.把弹性项沿着弹性容器的主轴线(main axis)对齐. 该操作发生在弹性长度以及自己主动边距被确定后. 它用来在存在剩余空间时怎样加以 ...
- spring boot系统学习(知识点笔记)
一.http的注解配置 1.@SpringBootAplication=@SpringBootConfiguration(其实就是个@Configuration)+@EnableAutoConfigu ...
- HTML5中x-webkit-speech语音输入功能
如今各大站点都在搜索框中增加了语音输入功能,只是眼下仅仅有Chrome 11及以上版本号才支持. 能够用chrome浏览器在这里试试效果,点击话筒就可以: 实现起来也很easy,为input加入名为 ...
- ES线程池设置
每个Elasticsearch节点内部都维护着多个线程池,如index.search.get.bulk等,用户可以修改线程池的类型和大小,线程池默认大小跟CPU逻辑一致 一.查看当前线程组状态 cur ...
- [ZJOJ2014] 力 解题报告 (FFT)
题目链接: https://www.luogu.org/problemnew/show/P3338 题目: 给出$n$个数$q_i$,令$F_j=\sum_{i<j}\frac{q_iq_j}{ ...
- [Avito Code Challenge 2018 G] Magic multisets(线段树)
题目链接:http://codeforces.com/contest/981/problem/G 题目大意: 有n个初始为空的‘魔法’可重集,向一个‘可重集’加入元素时,若该元素未出现过,则将其加入: ...