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的更多相关文章

  1. LeetCode SQL题目(第一弹)

    LeetCode SQL题目 注意:Leetcode上的SQL编程题都提供了数据表的架构程序,只需要将它贴入本地数据库即可调试自己编写的程序 不管是MS-SQL Server还是MySQL都需要登陆才 ...

  2. [LeetCode]Sql系列4

    ##题目1 626. 换座位 小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id. 其中纵列的 id 是连续递增的 小美想改变相邻俩学生的座位. ...

  3. [Leetcode]Sql系列3

    题目1 产品数据表: Products +---------------+---------+ | Column Name | Type | +---------------+---------+ | ...

  4. [LeetCode]Sql系列2

    题目 1205. 每月交易II Transactions 记录表 +----------------+---------+ | Column Name | Type | +-------------- ...

  5. [Leetcode|SQL] Combine Two Tables

    Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...

  6. LeetCode SQL: Second Highest Salary

    , NULL, salary) as `salary` from ( ,) tmp Write a SQL query to get the second highest salary from th ...

  7. [LeetCode]Sql系列

    题目1 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--------+--------------+ ...

  8. 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 ...

  9. leetcode 182. Duplicate Emails having的用法 SQL执行顺序

    https://leetcode.com/problems/duplicate-emails/description/ 首先sql的执行顺序是 from-->where-->group b ...

随机推荐

  1. ASP.NET-RedirectToAction只能使用get方法

    两个同名Action共同使用return View() return RedirectToAction("test", new { ls = list.Fct_OrderList ...

  2. COGS——T 1168. 机器调度

    http://www.cogs.pro/cogs/problem/problem.php?pid=1168 ★★   输入文件:machine.in   输出文件:machine.out   简单对比 ...

  3. po层和vo层中po和vo是什么意思

    POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. pojo 是Plain Old Java Ob ...

  4. Android 开发之集成百度地图的定位与地图展示

    app 应用中,大多数应用都具有定位功能,百度定位就成了开发人员的集成定位功能的首选,近期也在做定位功能,可是发现百度真是个大坑啊, sdk 命名更新了,相关代码却不更新,害得我花费了非常长时间来研究 ...

  5. java-面向对象(二)

    这几天正在看HeadFirst的时候,突然认为面向对象的几个特点,有点理解模糊不清.所以在这再次回想一下,加深印象. 上篇博客(http://blog.csdn.net/u010539352/arti ...

  6. elasticsearch的javaAPI之index

    Index API 原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html ...

  7. world 替换+正则表达式命令

    打开替换命令,点击“更多”,勾选上“通配符”,正则表达式才会起作用

  8. C#的常见算法(面试)(转)

    一.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m //方法一,通过顺序规律写程序,同时也知道flag标志位的重要性. static int F1(int m) { ; ...

  9. 【原创】查询占CPU高的oracle进程

    1:首先使用TOP命令传到占用CPU高的SPID号 PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND3575 oracle 1 12 ...

  10. php报错权限设置

    <?php //禁用错误报告 error_reporting(0); //报告运行时错误 error_reporting(E_ERROR | E_WARNING | E_PARSE); //报告 ...