`
crabdave
  • 浏览: 1294917 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rank() function in application

阅读更多

rank() function in application

 

场景:使用oracle scott/tiger 登录 使用emp表
     1)取出各部门工资小于各部门平均工资80%的员工
     2)取出各部门工资排名第二名的员工

 

rank() 函数返回结果集分区内指定字段的值的排名,指定字段的值的排名是相关行之前的排名加一。
  语法:
  RANK() OVER([<partiton_by_clause>]<order by clause>)
  partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。
  Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。

 

表结构:

-- Create table
create table EMP
(
  EMPNO    NUMBER(4) not null,
  ENAME    VARCHAR2(10),
  JOB      VARCHAR2(9),
  MGR      NUMBER(4),
  HIREDATE DATE,
  SAL      NUMBER(7,2),
  COMM     NUMBER(7,2),
  DEPTNO   NUMBER(2)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table EMP
  add constraint PK_EMP primary key (EMPNO)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
alter table EMP
  add constraint FK_DEPTNO foreign key (DEPTNO)
  references DEPT (DEPTNO);

 

抽取emp数据:

prompt PL/SQL Developer import file
prompt Created on 2011年5月27日星期五 by David
set feedback off
set define off
prompt Disabling foreign key constraints for EMP...
alter table EMP disable constraint FK_DEPTNO;
prompt Loading EMP...
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600, 300, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7521, 'WARD', 'SALESMAN', 7698, to_date('22-02-1981', 'dd-mm-yyyy'), 1250, 500, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7566, 'JONES', 'MANAGER', 7839, to_date('02-04-1981', 'dd-mm-yyyy'), 2975, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-09-1981', 'dd-mm-yyyy'), 1250, 1400, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850, null, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7782, 'CLARK', 'MANAGER', 7839, to_date('09-06-1981', 'dd-mm-yyyy'), 2450, null, 10);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7788, 'SCOTT', 'ANALYST', 7566, to_date('19-04-1987', 'dd-mm-yyyy'), 3000, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981', 'dd-mm-yyyy'), 5000, null, 10);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7844, 'TURNER', 'SALESMAN', 7698, to_date('08-09-1981', 'dd-mm-yyyy'), 1500, 0, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7876, 'ADAMS', 'CLERK', 7788, to_date('23-05-1987', 'dd-mm-yyyy'), 1100, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7900, 'JAMES', 'CLERK', 7698, to_date('03-12-1981', 'dd-mm-yyyy'), 950, null, 30);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7902, 'FORD', 'ANALYST', 7566, to_date('03-12-1981', 'dd-mm-yyyy'), 3000, null, 20);
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7934, 'MILLER', 'CLERK', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300, null, 10);
commit;
prompt 14 records loaded
prompt Enabling foreign key constraints for EMP...
alter table EMP enable constraint FK_DEPTNO;
set feedback on
set define on
prompt Done.

 

解决方案 SQL:
1)

select a.deptno,a.ename,a.sal,b.avgsal
  from emp a,
       (select t.deptno, avg(t.sal) * 0.8 as avgSal
          from emp t
         group by t.deptno) b
 where a.deptno = b.deptno
   and a.sal < b.avgSal
 order by a.deptno;

 或者:

select a.deptno,a.ename,a.sal,a.avgsal  
  from (select t.*, avg(t.sal) over(partition by t.deptno) * 0.8 as avgSal
          from emp t) a
 where sal < avgsal

 

结果:
1 10 MILLER   1300.00   2333.33333333333
2 20 SMITH     800.00    1740
3 20 ADAMS   1100.00   1740
4 30 WARD    1250.00   1253.33333333333
5 30 MARTIN  1250.00   1253.33333333333
6 30 JAMES    950.00     1253.33333333333

 

2)

select b.deptno,b.ename,b.sal
  from (select a.*,
               rank() over(partition by a.deptno order by a.sal desc) ra
          from emp a) b
 where b.ra = 2;

 

结果:
1 10 CLARK 2450.00
2 30 ALLEN 1600.00

 

其中部门号为20的部门工资中有两个并列第一,所以没有第二名。

 

分享到:
评论
1 楼 weiruan85 2011-05-27  
thanks for your sharing

相关推荐

    Low-rank matrix recovery via smooth rank function and its application in image restoration

    Low-rank matrix recovery via smooth rank function and its application in image restoration

    STABLE AVERAGES OF CENTRAL VALUES OF RANKIN-SELBERG L-FUNCTIONS

    本文聚焦于自守形式的Rankin-Selberg L函数的中心值的稳定平均数。Paul Nelson的研究是继Michel-Ramakrishan在2007年的工作以及Feigon-Whitehouse在2008年的推广之后的进一步发展。本文提出了一系列新的变体,主要...

    DDR扫盲——single rank与dual-rank

    为了实现这一目标,DIMM(Dual In-line Memory Module,双列直插式内存模块)上的内存颗粒需要共同协作,将各自的数据位合并成完整的64位数据(word)。 #### 三、内存颗粒配置 DIMM上的每个内存颗粒提供的数据位...

    计算rank1和rank5-python源码.zip

    在机器学习和推荐系统领域,Rank1和Rank5是评估模型性能的重要指标,尤其是在信息检索和推荐算法中。本文将详细解析如何使用Python编写代码来计算Rank1和Rank5,并结合给定的“案例38 计算rank1和rank5”的源码进行...

    web-rank.rar_In Time_rank_web rank

    "web-rank.rar_In Time_rank_web rank" 这个压缩包文件很可能包含了一些关于网页实时排名算法的信息,特别是与时间相关的排名策略。"In Time rank" 可能指的是基于网页内容更新频率或时间的新鲜度排名,而 "web_rank...

    Solutions of Hackerrank challenges in various languages - .zip

    【标题】"Solutions of Hackerrank challenges in various languages - .zip" 提供的是一个包含多种编程语言解冑 Hackerrank 挑战问题的资源包。Hackerrank 是一个著名的在线编码平台,它提供了丰富的算法和编程挑战...

    textrank4zh_textrank算法_textrank4zh_文本分词;摘要分析_

    《基于TextRank4ZH的中文文本处理技术》 在信息技术高速发展的今天,自然语言处理(Natural Language Processing, NLP)领域中的文本分析技术扮演着越来越重要的角色。TextRank4ZH,作为一个专门针对中文文本的工具...

    RankSVM排序算法

    RankSVM,全称为Rank Support Vector Machine,是一种用于处理排序问题的机器学习算法。它将传统的支持向量机(SVM)理论与排序任务相结合,旨在优化预测序列的全局顺序,而不仅仅是分类的准确性。在诸如信息检索、...

    改良的Rankin量表.pdf

    《改良的Rankin量表》是评估脑卒中患者康复情况的重要工具,主要用来衡量患者在脑卒中后的生活功能恢复程度。该量表通过六个等级对患者的状况进行评分,以确保不同观察者之间评估的一致性,减少误差。 1. **完全无...

    TextRank4ZH

    《TextRank4ZH:中文文本处理的利器》 在信息技术高速发展的今天,自然语言处理(NLP)领域已经成为研究的热点。TextRank4ZH,正如其名,是针对中文文本的一种算法实现,它主要应用于关键词提取和摘要生成,是中文...

    Algorithm-HackerRank-Solutions-In-Scala.zip

    本资料包“Algorithm-HackerRank-Solutions-In-Scala.zip”则专门针对HackerRank平台上的算法挑战,通过Scala语言提供了解决方案。 HackerRank是一个在线平台,致力于提升程序员的技能,尤其是算法能力。它提供了...

    TextRank, TextRank算法提取关键词的Java实现.zip

    TextRank是一种基于图的排序算法,最初应用于网页排名,但后来也被广泛用于文本处理领域,尤其是关键词抽取。这个“TextRank, TextRank算法提取关键词的Java实现.zip”压缩包文件包含了一个开源项目,名为“TextRank...

    hackerrank题目解答

    Hackerrank是一个全球性的技术招聘平台,它通过一系列的编程挑战和练习来帮助求职者在编码方面提高技能并为职场做好准备。本题解涉及了多个编程语言和算法的概念,下面我将从提供的文件内容中提炼出相关知识点。 ##...

    ROW_NUMBER、RANK、DENSE_RANK 和 NTILE

    ROW_NUMBER、RANK、DENSE_RANK 和 NTILE 排名函数 MS SQL 2005 中的排名函数包括 ROW_NUMBER、RANK、DENSE_RANK 和 NTILE,这四个函数可以有效地分析数据并提供排序值。下面将详细介绍每个函数的用法和示例。 一、...

    Sparse representation and low-rank approximation for sensor signal processing

    近年来,稀疏表示(Sparse Representation)与低秩近似(Low-Rank Approximation)作为重要的信号处理特性,在图像处理、通信、计算机视觉、模式识别、雷达等领域得到了广泛应用。本文旨在综述稀疏表示与低秩近似...

    内存条的逻辑BANK和RANK(物理BANK)概念.doc

    通常,一个内存条上的物理BANK数量取决于其设计,例如,DDR3内存条可能有1个或2个RANK,而DDR4内存条可以有1到4个RANK。RANK的数量直接影响了内存条的最大容量和并发性能。 接着,我们探讨逻辑BANK。逻辑BANK是内存...

    SVD and application 奇异值分解及其应用

    in matrix computation and analysis, but also is a powerful tool in ma- chine learning and modern data analysis. In this tutorial we first study the basic notion of SVD and then show the central role ...

    Page Rank

    Page Rank是Google搜索引擎算法的核心组成部分,它通过评估网页之间的链接关系来确定网页的重要性。这个概念由Google的创始人拉里·佩奇(Larry Page)和谢尔盖·布林(Sergey Brin)在1996年提出,是他们早期搜索...

    Low Rank Approximation

    低秩估计的介绍数据,对低秩估计的原理,算法和应用进行了介绍

    Python-TextRank4ZH从中文文本中自动提取关键词和摘要

    summary = [s.content for s in tr4s.sentences] # 获取摘要句子 ``` 5. 输出结果: ```python print("关键词:", keywords) print("摘要:", summary) ``` TextRank4ZH不仅适用于新闻、论文等长文本,还可以应用...

Global site tag (gtag.js) - Google Analytics