中等
177. 第N高的薪水

1 | CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT |
- 函数的定义,关键字
create function,begin开始,end结束
178. 分数排名

1 | select Score,dense_rank() over(order by Score desc) as `Rank` from Scores; |
- 窗口函数
dense_rank():两个分数相同,则排序相同,下一个分数的排序是下一个连续的整数值,不空出并列所占的位次 rank():两个分数相同,则排序相同,下一个分数的排序需空出并列所占的位次row_number():为行分配序号,不考虑是否并列,即使数值相同也会连续排序over():排序函数没有参数,必须通过over()语句中的order by column_name指定按照某列排序,还可通过over()语句中的partition by column_name指定按照某列分组
180. 连续出现的数字

1 | select distinct Num as ConsecutiveNums from( |
- 窗口函数
lag(expr,offset) over()和lead(expr,offset) over():分别返回当前行之前和之后的行,offset指定向前或向后滑动几行
184. 部门工资最高的员工

1 | select Department,Employee,Salary from( |
626. 换座位

1 | select id, |
困难
185. 部门工资前三高的所有员工

1 | select Department,Employee,Salary from ( |
- 与184题“部门工资最高的员工”不同,不能使用
rank()而应该使用dense_rank()
262. 行程和用户




1 | select Request_at as `Day`,round(sum(if(Status='completed',0,1))/count(*),2) as 'Cancellation Rate' from Trips |
round()函数:四舍五入保留指定位数的小数
601. 体育馆的人流量


1 | select distinct a.* from Stadium as a,Stadium as b,Stadium as c where |
