目录
177. 第N高的薪水
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
declare m INT;
set m=N-1;
RETURN (
# Write your MySQL query statement below.
select ifnull((select distinct salary from Employee order by salary desc limit m,1),null)
);
END
178. 分数排名
select Score,dense_rank() over(order by score desc ) 'Rank' from Scores
(
rank()---1,2,2,4,5
排名为相同时记为同一个排名, 并且参与总排序
dense_rank() over (PARTITION BY xx ORDER BY xx [DESC])---1,2,2,3,4
排名相同时记为同一个排名, 并且不参与总排序
row_number() over (over (PARTITION BY xx ORDER BY xx [DESC]))----1,2,3,4,5
排名相同时记为下一个排名
)
180. 连续出现的数字
select distinct num ConsecutiveNums
from (
select *,
row_number() over (partition by num order by id) row_num,
row_number() over (order by id) id2
from Logs
) t
group by(id2-row_num),num
having count(*)>=3;
184. 部门工资最高的员工
select d.name as department,e.name as employee,e.salary
from employee e
join department d on e.departmentid=d.id
where (e.departmentid,e.salary) in
(select departmentid,max(salary) from employee group by departmentid)
1454. 活跃用户
select * from accounts a
where a.id in(
select l1.id from logins l1,logins l2
where l1.id=l2.id and datediff(l2.login_date,l1.login_date) between 0 and 4
group by l1.id,l1.login_date
having count(distinct l2.login_date)=5
)
order by a.id