oracle创建表:

create table EMPLOYEE
(empid  VARCHAR2(50) not null,name   VARCHAR2(50),salary NUMBER(5),sex    VARCHAR2(50),dep    VARCHAR2(50)
)
;
comment on table EMPLOYEEis '员工表';prompt Loading EMPLOYEE...
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('1', 'joy', 1500, 'm', '综合部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('2', 'mano', 1800, 'f', '综合部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('3', 'cha', 2000, 'm', '综合部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('4', 'rose', 2100, 'm', '综合部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('5', 'phea', 1400, 'f', '人力资源部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('6', 'arthur', 2100, 'm', '人力资源部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('7', 'sasun', 1000, 'f', '人力资源部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('8', 'jack', 4000, 'm', '开发部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('9', 'maech', 3000, 'm', '开发部');
insert into EMPLOYEE (empid, name, salary, sex, dep)
values ('10', 'gab', 1900, 'm', '人力资源部');
commit;

结果:

1、有一个表Employee,查一个公司里所有超过平均工资的员工。

select m.name, m.salaryfrom EMPLOYEE m, (select avg(t.salary) salavg from EMPLOYEE t) nwhere m.salary > n.salavg;

2、女性员工数大于等于2个人的部门。

select n.dep from (select count(*)  numb,t.dep  from EMPLOYEE t where t.sex = 'f'  group by t.dep) n where n.numb>1;

select n.depfrom (select count(*) numb, t.depfrom EMPLOYEE twhere t.sex = 'f'group by t.dep) nwhere n.numb > 1;

3、分页语句。

SELECT *FROM (SELECT ROWNUM AS rowno, t.*        FROM Employee t        WHERE 1 = 1AND ROWNUM <= 10) table_aliasWHERE table_alias.rowno >= 5;SELECT *FROM (SELECT a.*, ROWNUM rnFROM (SELECT *FROM Employee) aWHERE ROWNUM <= 10)WHERE rn >= 5

以下是rank over的用法

1、查公司工资前三的人员

select * from (select rank() over(order by S.salary desc) rk,S.name,S.salary from EMPLOYEE S) T where T.rk<=3;

select *from (select rank() over(order by S.salary desc) rk, S.name, S.salaryfrom EMPLOYEE S) Twhere T.rk <= 3;

2、对所有的工资进行排序, 整个结果集是一个分组,以name进行排名

SELECT t.name, t.salary, rank() OVER(ORDER BY t.salary) rankFROM EMPLOYEE t;

3、以t.dep进行分组,对工资进行排名。

SELECT t.dep, t.name,t.salary,rank() OVER(PARTITION by t.dep ORDER BY t.salary) rankFROM EMPLOYEE t;

4、以t.sex,t.dep进行分组,在每个组内以b进行排名。

SELECT t.sex,t.dep,t.salary,rank() OVER(PARTITION by t.sex, t.dep ORDER BY t.salary) rankFROM EMPLOYEE t;

总结:

1、partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。

2、Rank 是在每个分组内部进行排名的。

参考:http://www.cnblogs.com/mycoding/archive/2010/05/29/1747065.html

转载请注明:

Rank() over的用法相关推荐

  1. Rank() over()的用法

    Rank() over()的用法 创建一个test表,并插入6条数据. CREATE TABLE test (a INT,b INT,c CHAR ) INSERT INTO test VALUES( ...

  2. Sql rank类的用法

    为了方便讲解假设我们有一个成绩表内容如下 1.rank() over的用法 作用:查出指定条件后的进行排名,条件相同排名相同,排名间断不连续. 例如:成绩排名,使用这个函数,成绩相同的两名是并列,下一 ...

  3. Matlab 中 rank() 函数的用法—求矩阵的秩

    >> a=round(rand(5)) a = 1     0     0     0     1      1     0     1     0     0      0     1 ...

  4. 函数专题:sum、row_number、count、rank\dense_rank over

    来源:http://blog.csdn.net/bbliutao/article/details/7727320 一.sum over sum over主要用来对某个字段值进行逐步累加 SELECT  ...

  5. RedisTemplate操作redis五大类型用法详解(springboot整合redis版本)

    1.案例说明 springboot整合redis之后,提供了操作redis的简便方式 通过通用对象redisTemplate方式操作String,Hash,List,Set SortSet五大数据类型 ...

  6. mysql基础(全,必看)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  7. oracle 分析函数、GROUPING函数

    分析函数 over(Partition by...) 一个超级牛皮的ORACLE特有函数.天天都用ORACLE,用了快2年了.最近才接触到这个功能强大而灵活的函数.真实惭愧啊!oracle的分析函数o ...

  8. PRESTO SQL总结分享

    1.常用SQL语法 1.1 字符substr(staff_leave_date,1,10) concat(string1, ..., stringN) → varchar--拼接多个字符串 lengt ...

  9. pytorch基础学习(四) 数据处理(一)

    1. tensor的attributes tensor有以下几个常用的attributes,首先看一段代码: import torch t = torch.Tensor() print(type(t) ...

最新文章

  1. 2021年大数据Hadoop(二十五):YARN通俗介绍和基本架构
  2. 启明云端分享|ESP32-C3(ESP32­C3­MINI­1)使用的RISC与CISC有什么区别
  3. 水利水电工程管理与实务电子版习题_每日一练:一级建造师案例题(水利水电工程管理与实务)...
  4. C++课程设计详解-12306的模拟实现
  5. Java Stream ORM现在带有JOIN
  6. android条形图,MPAndroid组条形图未显示
  7. 【二十】Jmeter:插件二次开发—— JMeter 源码导入 eclipse
  8. 解决SVN安装语言包后无法选择中文的问题(亲测可行)
  9. 计算机考试报名填写完资料无法提交,护考报名入口已开通,常见问题看这里~...
  10. kubernetes多节点集群搭建过程分析
  11. codevs 1329 东风谷早苗
  12. 忘记电脑开机密码怎么办?六种方法教你解决
  13. HTC One M7刷机包 基于官方4.3.0 精简稳定 省电(新蜂V2.5)
  14. Flash鼠绘入门第五课:绘制可口的樱桃-Flash鼠绘可口的樱桃(1)
  15. tp5使用monolog_使用Monolog记录:从Devtools到Slack
  16. python 学习笔记(二)数列
  17. java SNS网络系统_JEESNS-JAVA开源SNS社交管理系统
  18. 360安全卫士“隐身僵尸木马”专杀工具,木马乎?
  19. GDOI2018事故记录
  20. 通达信l2接口如何获取?

热门文章

  1. FDA败诉,辉瑞被迫公布疫苗副作用数据
  2. ## 线上实验五:2个2位二进制乘法器
  3. USB2.0如何区分low speed、full speed 和high speed
  4. Linux开启SSH远程登陆root账户
  5. 图片如何让去水印-如何帮图片去水印
  6. KBP307-ASEMI整流桥KBP307
  7. 实战Go语言:并发爬虫-欧阳桫-专题视频课程
  8. python的特征是什么_Python 特点
  9. 【数据结构】图的存储结构—邻接表
  10. (六)创建并调试SPFx字段扩展解决方案