sql语句梳理

表数据:

image.png

实现结果(对薪水进行排名):

image.png

sql语句实现

1.子查询只能返回一条数据,如果子查询返回多条数据则会出错。
2.每一条select子查询只能查询一个字段。

SELECT
  s1.emp_no,
  s1.salary,
  (SELECT
    COUNT(DISTINCT s2.salary)
  FROM
    salaries s2
  WHERE s2.to_date = '9999-01-01'
    AND s2.salary >= s1.salary) AS `rank`  -- 去重:计算并列排名
FROM
  salaries s1
WHERE s1.to_date = '9999-01-01'
ORDER BY s1.salary DESC,
  s1.emp_no ;
窗口函数实现
SELECT
  emp_no,
  salary,
  dense_rank () over (
ORDER BY salary DESC) AS `rank`
FROM
  salaries
WHERE to_date = '9999-01-01' ;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容