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. windows下使用libsvm3.2

    一.官方介绍 libsvm主页:https://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html libsvm介绍文档:http://www.csie.ntu. ...

  2. 非典型的scala程序及其编译后的结果

    初学Scala Folder structure以及部分代码 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2xldmVyd3lx/font/5a6L5L ...

  3. cocos2d-x 中XML解析与数据存储

    一不小心就玩了一周的游戏了.哎.玩的时候时间过得总是这么快... 于是今天决定看一下之前不怎么非常熟悉的XML;(之前做游戏时数据的储存用到过XML,但这块是还有一个同事在做,所以不怎么熟悉), 看了 ...

  4. hibernate配置数据库连接池三种用法

    三种连接都是以连接MySQl为例. <!-- JDBC驱动程序 --> <property name="connection.driver_class">o ...

  5. 110个经常使用Oracle函数总结

    1. ASCII 返回与指定的字符相应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dua ...

  6. hdu_4707

    算是水题一道吧,我也没有建树,看别人又用vector,又用bfs,dfs的,对vector不熟,所以就模拟了一下 #include<iostream> #include<string ...

  7. NOIP2017提高组模拟赛5 (总结)

    NOIP2017提高组模拟赛5 (总结) 第一题 最远 奶牛们想建立一个新的城市.它们想建立一条长度为N (1 <= N <= 1,000,000)的 主线大街,然后建立K条 (2 < ...

  8. 使用Networkx进行图的相关计算——黑产集团挖掘,我靠,可以做dns ddos慢速攻击检测啊

    # -*- coding: utf-8 -*- import networkx as nx import matplotlib.pyplot as plt iplist={} goodiplist={ ...

  9. Linux下处理JSON的命令行工具:jq---安装

    转自:https://blog.csdn.net/Sunny_much/article/details/50668871      JSON是前端编程经常用到的格式.Linux下也有处理处理JSON的 ...

  10. [NOI.AC 2018NOIP模拟赛 第三场 ] 染色 解题报告 (DP)

    题目链接:http://noi.ac/contest/12/problem/37 题目: 小W收到了一张纸带,纸带上有 n个位置.现在他想把这个纸带染色,他一共有 m 种颜色,每个位置都可以染任意颜色 ...