用ROW_NUMBER函数可以解决什么问题
来源:互联网 发布:数据分析器 编辑:程序博客网 时间:2024/04/24 19:29
作用(Purpose)
用来统计top-n或者bottom-n
比如你可以用它来统计(或者说查询)出
a.各个部门工资最高的前 n个员工
b.各个部门最先入职的前 n个员工
所以符合这个应用情景条件是:
a.1对多(部门对员工)
b.要对多的一方(员工)最高或最低的某个字段(工资,入职时间等)进行统计
c.前n个语法(Syntax)
ROW_NUMBER() over(PARTITION BY **A** ORDER BY **B** desc/asc)
其中:
A: 1对多中1的那一方
B: 最高或最低的某个字段具体实例(Examples)
各个部门工资最高的前 3个员工SELECT department_id, first_name, last_name, salaryFROM(SELECTdepartment_id, first_name, last_name, salary,ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary desc) rnFROM HR.employees)WHERE rn <= 3ORDER BY department_id, salary DESC, last_name;
各个部门最先入职的前 3个员工
SELECT department_id, first_name, last_name, HIRE_DATE, salary FROM (SELECT department_id, first_name, last_name, HIRE_DATE, salary, ROW_NUMBER() OVER (PARTITION BY DEPARTMENT_ID ORDER BY HIRE_DATE ASC) R FROM HR.employees)WHERE R <=3ORDER BY department_id, HIRE_DATE ASC, last_name;
前三个订单总额最高的顾客,每人的订单总额最高前三条记录
SELECT CUSTOMER_ID, ORDER_TOTALFROM (SELECT CUSTOMER_ID, ORDER_TOTAL, ROW_NUMBER() OVER(PARTITION BY CUSTOMER_ID ORDER BY ORDER_TOTAL DESC) RN FROM OE.ORDERS)WHERE RN <= 3AND CUSTOMER_ID IN (SELECT CUSTOMER_ID FROM (SELECT CUSTOMER_ID, MAX(ORDER_TOTAL) FROM OE.ORDERS GROUP BY CUSTOMER_ID ORDER BY MAX(ORDER_TOTAL) DESC) T WHERE ROWNUM <= 3)ORDER BY CUSTOMER_ID;
0 0
- 用ROW_NUMBER函数可以解决什么问题
- 光驱坏了,用什么方法可以解决装机问题#
- 用什么办法可以解决失眠?
- 什么方法可以解决单点登录的问题呢?
- ROW_NUMBER()函数的使用 (利用可以轻松分页)
- ROW_NUMBER() 函数
- ROW_NUMBER()函数
- row_number() 函数
- cvAdaptiveThreshold函数能解决图像分割中的什么问题
- 如何解决“不是可以识别的 函数名“的问题
- 中间件解决什么问题
- Raid解决什么问题
- 可以用贪心解决的背包问题
- eclipse.ini中改为这个可以解决启不来,报什么内存错误的问题
- 《从程序员到项目经理》读后感-什么问题都是可以解决的
- sql server 2005 中的利用ROW_NUMBER() 解决数据分页问题
- oracle分析函数 row_number()怎么用
- sql 用ROW_NUMBER() over函数简单分页
- 设计模式学习笔记--策略模式
- Centos之hadoop之lzo库安装
- Android获取Manifest中<meta-data>元素的值
- Java中的PO和VO
- GreenDAO框架(四)数据库的更新升级
- 用ROW_NUMBER函数可以解决什么问题
- web前端之CSS设计指南三:界面组件(菜单)
- Lua语言快速入门
- CollectionView 使用
- java 消息机制 ActiveMQ入门实例
- liunx常用快捷键-截屏
- 模块化程序设计-参数和结果传递的问题
- vue中动态组件的使用
- 关于Git一些思考与感受