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

<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)

结果集如下:

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

时间: 2024-11-09 11:18:46

给群里的哥们写的sql(row_number、rank、dense_rank)的相关文章

sql排序对比(row_number,rank,dense_rank)

不解释,全靠悟性: select loan_num,row_number() over(order by loan_num asc) as 'Row Number',rank() over(order by loan_num asc) as 'Rank',dense_rank() over(order by loan_num asc) as 'Dense Rank'from dbo.tals_loan

群里分享的react的收藏一下!今日周末,改了个表单验证然后无所事事了!

今日周末,改了个表单验证然后无所事事了,然后把昨天群里分享的react的收藏一下尽管现在还在研究angular和nodeJs毕竟刚刚开始用有点不熟...没准以后会研究一下react毕竟看着下面这张图还是觉得有点欢乐的 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,

在一个前端群里看到的一个练习,获取阿姆斯特朗数

本来周五在公司,也没啥事情干,在群里看见别人发的一个题目,身为一个前端菜鸡就写了一下,不喜勿喷.... 实现输入一个数,当在一个可变范围内时,会返回输入数字最近的一个阿姆斯特朗数,并且可以输出范围内所有的阿姆斯特朗数. 题目如上,直接上代码... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition

经验篇第三期:群里的那点事儿(三)

问题1:MJ刷新报错的问题 问题2:键盘的return键的修改 问题3:关于SegmentedControl去掉边框颜色问题 问题4:tableView实现多项选择的思路 问题5:关于lldb语言PO的用法 问题6:日期转化为时间的方法 问题7:实现输入密码的效果 问题8:证书相关问题 问题9:支付相关问题 问题10:关于NSNotificationCenter的注意事项 一个VC不能多次add,在dealloc里面进行remove 问题11:真机调试Xcode未设置版本兼容问题 问题12:关于

将复杂查询写到SQL配置文件--SOD框架的SQL-MAP技术简介

引言 今天看到一片热门的博客, .NET高级工程师面试题之SQL篇 ,要求找出每一个系的最高分,并且按系编号,学生编号升序排列.这个查询比较复杂,也比较典型,自从用了ORM后,很久没有写过SQL语句了,于是我研究了下,自己也写了一个: WITH cte1 as ( select stu.deptID, D.depName, stu.stuid , stu.stuName, score_sum.AllScore from dbo.Student stu inner join (select stu

Vue 脱坑记 - 查漏补缺(汇总下群里高频询问的xxx及给出不靠谱的解决方案)

前言 发现群里有些问题的提问重复率太高了,每次都去回答,回答的贼烦.这里做一个大体的汇总,废话不多说,直接开始给出方案,不是手把手..若是连问题和解决都看不懂的..应该去补充下基础知识 问题汇总 Q:安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本 /* cnpm website: https://npm.taobao.org/ */ npm install -g cnpm --registry=https://registry.npm.taoba

python学习总结---学习交流群里的问题总结

连续添加数据到明细: def onchange_product_id(self, cr, uid,ids, product_id,line_id, context=None): result={} if product_id: sql="select product_id, sum (qty) qty,lot_id ,max(in_date) in_date ,location_id from stock_quant where product_id=%d GROUP by product_id

怎样在dos里进入mysql,执行sql语句

1.进入mysql bin目录下,执行mysql.exe 2.用mysql -uroot -p登陆mysql之后就可以使用 怎样在dos里进入mysql,执行sql语句,布布扣,bubuko.com

经验篇第一期:群里的那点事儿

问题1:审核问题 问题2:UI控件根据数据自适应宽度 问题3:真机调试新出问题 问题4:UITableView常见bug 问题5:关于字符串copy与Strong地址不变的争议 问题6:关于系统内部推送开关相关方法的问题 问题7:关于UITableView数据源修改遗忘代码问题 学弟的问题是没有好好控制数据源DataSource里面的返回Cell个数的方法,也就是忘记返回第二个数组了,只返回了第一个数组,所以请大家注意,修改tableView的数据是要整体DataSource的方法都要修改才可以