题解 | #对所有员工的薪水按照salary降序进行1-N的排名#
对所有员工的薪水按照salary降序进行1-N的排名
http://www.nowcoder.com/practice/b9068bfe5df74276bd015b9729eec4bf
我的方法:窗口函数
select emp_no,salary,dense_rank()over(order by salary desc) t_rank from salaries order by t_rank,emp_no
法二:不用group by,子查询可跟在select后面
select s2.emp_no,s2.salary,(select count(distinct s1.salary) from salaries s1 where s1.salary>=s2.salary)t_rank from salaries s2
order by s2.salary desc,emp_no
法三:自连接+group by
select t1.emp_no, t1.salary, count( distinct t2.salary) as t_rank
from salaries t1,salaries t2
where t1.salary <= t2.salary
group by t1.emp_no,t1.salary
order by t1.salary desc, t1.emp_no
SQL题解 文章被收录于专栏
主要是为自己做个笔记