leetcode SQL题目

文章目录

组合两个表

sql 复制代码
SELECT firstName,lastName,city,state FROM Person LEFT JOIN Address ON Person.PersonId=Address.PersonId

第二高的薪水

sql 复制代码
SELECT
IFNULL(
(SELECT DISTINCT salary FROM Employee Order by salary desc LIMIT 1,1),null
) AS SecondHighestSalary

第N高的薪水

sql 复制代码
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N:=N-1;
  RETURN (
      # Write your MySQL query statement below.
      SELECT IFNULL((SELECT DISTINCT salary FROM Employee ORDER BY salary DESC LIMIT N,1),NULL) 
  );
END

分数排名

sql 复制代码
SELECT score, (SELECT count(DISTINCT score)+1 FROM Scores S2 Where S2.score>Scores.score) AS 'rank' FROM Scores ORDER BY score DESC

连续出现的数字

sql 复制代码
SELECT DISTINCT l1.num AS 'ConsecutiveNums' FROM Logs l1,Logs l2,Logs l3 WHERE l1.id=l2.id-1 AND l2.id=l3.id-1 AND l1.num=l2.num AND l2.num=l3.num

超过经理收入的员工

sql 复制代码
SELECT e.name AS Employee FROM Employee e,Employee e2 WHERE e2.id=e.managerId AND e.salary > e2.salary

查找重复的电子邮件

sql 复制代码
SELECT DISTINCT p1.email AS Email FROM Person p1,Person p2 WHERE p1.email=p2.email AND p1.id !=p2.id

从不订购的客户

sql 复制代码
SELECT name AS Customers FROM Customers WHERE id NOT IN (SELECT DISTINCT customerId FROM Orders)

部门工资最高的员工

sql 复制代码
SELECT Department.name AS Department,e.name AS Employee,e.salary AS Salary FROM Department,Employee e WHERE Department.id=e.departmentId AND e.salary >= ALL(SELECT salary FROM Employee e2 WHERE e.departmentId = e2.departmentId)

部门工资前三高的所有员工

sql 复制代码
SELECT Department.name AS Department, e.name AS Employee,e.salary AS Salary FROM Employee e,Department WHERE e.departmentId=Department.id AND
(SELECT COUNT(Distinct e2.salary) FROM Employee e2 WHERE e2.departmentId=e.departmentId AND e2.salary>e.salary)<3 ORDER BY e.departmentId ASC

删除重复的电子邮箱

sql 复制代码
DELETE p2 FROM Person p1,Person p2 WHERE p1.email=p2.email AND p1.id<p2.id

上升的温度

sql 复制代码
SELECT w2.id AS Id FROM Weather w1,Weather w2 WHERE DATEDIFF(w2.recordDate,w1.recordDate)=1 AND w1.Temperature < w2.Temperature

DATEDIFF()函数用于计算两个日期的天数差

游戏玩法分析Ⅰ

sql 复制代码
SELECT player_id,MIN(event_date) AS first_login FROM Activity GROUP BY player_id

游戏玩法Ⅳ

sql 复制代码
SELECT ROUND(
(SELECT COUNT(DISTINCT b.player_id) FROM Activity b WHERE (b.player_id,b.event_date) IN
(
SELECT a.player_id,DATE(MIN(a.event_date)+INTERVAL 1 DAY) FROM Activity a GROUP BY a.player_id
))
/
(SELECT COUNT(DISTINCT player_id) FROM Activity),2
) AS fraction
相关推荐
程序猿阿伟12 分钟前
《深度剖析SQL之WHERE子句:数据过滤的艺术》
数据库·sql·oracle
森焱森24 分钟前
格雷码、汉明码,CRC校验的区别
服务器·c语言·网络·人工智能·算法
zl0_00_024 分钟前
sql注入语句学习
数据库·sql·学习
YaoSolar30 分钟前
刷题记录(LeetCode 994.腐烂的橘子)
算法·leetcode·宽度优先
mazo_command32 分钟前
LeetCode热题100|128.最长连续序列,283.移动零
leetcode·哈希算法·散列表
米芝鱼37 分钟前
LearnOpenGL(九)自定义转换类
开发语言·c++·算法·游戏·图形渲染·shader·opengl
Rsecret244 分钟前
个人学习编程(3-29) leetcode刷题
学习·算法·leetcode
rigidwill6662 小时前
LeetCode hot 100—LRU缓存
数据结构·c++·算法·leetcode·缓存
LuckyLay2 小时前
LeetCode算法题(Go语言实现)_15
算法·leetcode·golang
ゞ 正在缓冲99%…2 小时前
leetcode74.搜索二维矩阵
算法·leetcode·矩阵