oracle中利用函数获得topn的结果集

oracle中利用函数获得topn的结果集

ID:8927857

大小:27.00 KB

页数:3页

时间:2018-04-12

oracle中利用函数获得topn的结果集_第1页
oracle中利用函数获得topn的结果集_第2页
oracle中利用函数获得topn的结果集_第3页
资源描述:

《oracle中利用函数获得topn的结果集》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、oracle中利用函数获得topn的结果集   RANK(),DENSE_RANK()是oracle8i的两个有趣的分析函数,可以用来解决top-N问题.两个函数的区别可以从下面例子中看出:createtableemp(Empnovarchar2(10),Enamevarchar2(10),Jobvarchar2(10),Mgrvarchar2(10),Salvarchar2(10));insertintoempvalues('Empno1','Ename1','Job1','Mgr1','1');insertintoempvalues('Empno2','Ename2','Job2'

2、,'Mgr2','2');insertintoempvalues('Empno3','Ename3','Job3','Mgr3','3');insertintoempvalues('Empno4','Ename4','Job4','Mgr4','4');insertintoempvalues('Empno5','Ename5','Job5','Mgr5','5');insertintoempvalues('Empno6','Ename6','Job6','Mgr6','6');insertintoempvalues('Empno7','Ename7','Job7','Mgr7','4'

3、);insertintoempvalues('Empno8','Ename8','Job8','Mgr7','5');insertintoempvalues('Empno9','Ename9','Job9','Mgr7','6');commit;SELECTEmpno,Ename,Job,Mgr,Sal,RANK()OVER(ORDERBYSALDescNULLSLAST)ASRank,DENSE_RANK()OVER(ORDERBYSALDescNULLSLAST)ASDrankFROMEmpORDERBYSALDescNULLSLAST;EMPNOENAMEJOBMGRSALRAN

4、KDRANK----------------------------------------------------------------------Empno6Ename6Job6Mgr6611Empno9Ename9Job9Mgr7611Empno5Ename5Job5Mgr5532Empno8Ename8Job8Mgr7532Empno4Ename4Job4Mgr4453Empno7Ename7Job7Mgr7453Empno3Ename3Job3Mgr3374Empno2Ename2Job2Mgr2285Empno1Ename1Job1Mgr1196结果是不是很奇妙?如果我们

5、自己写sql实现,是需要一些技巧的。1.利用RANK()可以实现top-N问题下面这个sql可以显示,最大的几个Sal,相同Sal的记录也同样显示.SELECTEmpno,Ename,Job,Mgr,SalFROM(SELECTEmpno,Ename,Job,Mgr,Sal,RANK()OVER(ORDERBYSALDescNULLSLAST)ASEmp_RankFROMEmpORDERBYSALDescNULLSLAST)WHEREEmp_Rank=1;EMPNOENAMEJOBMGRSAL-----------------------------------------------

6、---Empno6Ename6Job6Mgr66Empno9Ename9Job9Mgr76SELECTEmpno,Ename,Job,Mgr,SalFROM(SELECTEmpno,Ename,Job,Mgr,Sal,RANK()OVER(ORDERBYSALDescNULLSLAST)ASEmp_RankFROMEmpORDERBYSALDescNULLSLAST)WHEREEmp_Rank<4;EMPNOENAMEJOBMGRSAL--------------------------------------------------Empno6Ename6Job6Mgr66Empno

7、9Ename9Job9Mgr76Empno5Ename5Job5Mgr55Empno8Ename8Job8Mgr75SELECTEmpno,Ename,Job,Mgr,SalFROM(SELECTEmpno,Ename,Job,Mgr,Sal,RANK()OVER(ORDERBYSALDescNULLSLAST)ASEmp_RankFROMEmpORDERBYSALDescNULLSLAST)WHEREEmp_Rank<3;EMPNOENAME

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。