欢迎投稿

今日深度:

给群里的哥们写的sql(row_number、rank、dense_rank)

给群里的哥们写的sql(row_number、rank、dense_rank),rownumberrank



<span style="font-size:18px;">最近精力比较有限,有些常用的东西就先记录下来。方便以后自己查阅和总结。</span>

一个哥们想要实现如下效果:

DEPTNO ENAME                 SAL           TOP3      部门工资   排序
---------- ---------- ---------- ----------
     20     KING                    5000              1            8750   2
     20     CLARK                  2450              2            8750   2
     20     MILLER                 1300              3            8750   2

     10     SCOTT                  3000              1         8975     1
     10     FORD                    3000              2         8975    1
     10     JONES                   2975              3         8975    1

     30     BLAKE                   2850              1          5950     3
     30     ALLEN                   1600              2         5950      3
     30     TURNER                1500              3         5950     3

从上图可以看出,他想要实现部门的总工资排名。这个就要用到我们常说的分析函数了。分析函数是什么,这里就不多说了。有兴趣的朋友,请自己查阅官方文档。
下面我们来实现上图的功能: 首先,第一步我们需要先求出每个部门的总工资,SQL如下:
select deptno,
               ename,
               sal,
               sum(sal) over(partition by deptno order by deptno) as sumsal

          from emp
查询的结果集:

第二步,我们就要实现最终的功能,附上SQL:

select deptno,
       ename,
       sal,
       sumsal,
       row_number() over(partition by deptno order by sal) as "部门内排名",
      dense_rank() over(order  by sumsal) as "部门排名"
  from (select deptno,
               ename,
               sal,
               sum(sal) over(partition by deptno order by deptno) as sumsal

          from emp)

结果集如下:


图片显示的效果,就是我们想要的最终结果。以后在附上相关分析函数的使用效果。今天就到这,上班了。。。。


SQL中DENSE_RANK与ROW NUMBER的不同是什?

DENSE_RANK ROW_NUMBER rank
1 1 1
2 2 2
2 3 2
2 4 4
3 5 5

例子中都是排名,就是在处理并列第二名的时候有区别
 

T-SQL中,rank与row_number 什地方不一样?

两个都很相似,都是对数据分类排序,不过RANK 排序的时候跟排名次一样,rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内),row_number一般没有重复值
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3956.html NewsArticle 给群里的哥们写的sql(row_number、rank、dense_rank),rownumberrank span style=font-size:18px;最近精力比较有限,有些常用的东西就先记录下来。方便以后自己查阅和总结。/span 一个哥们想要实现如...
评论暂时关闭