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
相关推荐
网管NO.11 天前
SQL 排序分页精讲!ORDER BY+LIMIT 全套用法,报表分页
数据库·sql
Black蜡笔小新1 天前
自动化AI算法训练服务器DLTM助力医学影像分析进入AI智能分析新时代
人工智能·算法·自动化
手写码匠1 天前
深入解析大模型架构之争:全能通用模型 vs 领域专精模型
人工智能·深度学习·算法·aigc
浅念-1 天前
LeetCode 回溯算法题——综合练习
数据结构·c++·算法·leetcode·职场和发展·深度优先·dfs
列星随旋1 天前
线段树和树状数组的学习
学习·算法
圣保罗的大教堂1 天前
leetcode 61. 旋转链表 中等
leetcode
全糖可乐气泡水1 天前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
h_a_o777oah1 天前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化