美文网首页
MySql: ntile()和nth_value的使用

MySql: ntile()和nth_value的使用

作者: Libro_kkkk | 来源:发表于2021-03-31 00:30 被阅读0次

先看数据:employee 表里有员工id和对应的薪水


问题1:选取薪水前50%的员工id。

1)分桶:

SELECT

id,

salary,

NTILE(2) over(ORDER BY salary) rnk

FROM employee;

结果:如下图,将数据分成了两部分,由于我这里是按照降序排列的,所以选择rnk=2的就可以了。

2)选择数据:

SELECT

id

FROM(

        SELECT

            id,

            salary,

            NTILE(2) over(ORDER BY salary) rnk

        FROM employee

            ) a

WHERE rnk=2

问题2:选取每个部门工资排名第一的员工id

1)找出最高薪水

SELECT

        id,

        dept_id,

        salary,

        NTH_VALUE(salary,1) over(PARTITION BY dept_id ORDER BY salary DESC) first_salary

FROM employee;

2)where进行筛选

SELECT

        a.id

FROM(

                SELECT

                        id,

                        dept_id,

                        salary,

                        NTH_VALUE(salary,1) over(PARTITION BY dept_id ORDER BY salary DESC) first_salary

                FROM employee

            ) a

WHERE a.salary=a.first_salary;

相关文章

网友评论

      本文标题:MySql: ntile()和nth_value的使用

      本文链接:https://www.haomeiwen.com/subject/sfgnhltx.html