`
ayaya
  • 浏览: 448465 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

oracle中聚合函数地用法

阅读更多
聚合函数RANK 和 dense_rank 主要的功能是计算一组数值中的排序值。

在9i版本之前,只有分析功能(analytic ),即从一个查询结果中计算每一行的排序值,是基于order_by_clause子句中的value_exprs指定字段的。
其语法为:
RANK ( ) OVER ( [query_partition_clause] order_by_clause )

在9i版本新增加了合计功能(aggregate),即对给定的参数值在设定的排序查询中计算出其排序值。这些参数必须是常数或常值表达式,且必须和ORDER BY子句中的字段个数、位置、类型完全一致。

其语法为:
RANK ( expr [, expr]... ) WITHIN GROUP
( ORDER BY
  expr [ DESC | ASC ] [NULLS { FIRST | LAST }]
  [, expr [ DESC | ASC ] [NULLS { FIRST | LAST }]]...
)


例子1:
有表Table内容如下
COL1  COL2
   1  1
   2  1
   3  2
   3  1
   4  1
   4  2
   5  2
   5  2
   6  2
分析功能:列出Col2分组后根据Col1排序,并生成数字列。比较实用于在成绩表中查出各科前几名的信息。
SELECT a.*,RANK() OVER(PARTITION BY col2 ORDER BY col1) "Rank" FROM table a;
结果如下:
COL1  COL2  Rank
   1  1     1
   2  1     2
   3  1     3
   4  1     4
   3  2     1
   4  2     2
   5  2     3
   5  2     3
   6  2     5
例子2:
TABLE:A (科目,分数)

数学,80
语文,70
数学,90
数学,60
数学,100
语文,88
语文,65
语文,77


现在我想要的结果是:(即想要每门科目的前3名的分数)


数学,100
数学,90
数学,80
语文,88
语文,77
语文,70
那么语句就这么写:

select * from (select rank() over(partition by 科目 order by 分数 desc) rk,a.* from a) t
where t.rk<=3;


例子3:

合计功能:计算出数值(4,1)在Orade By Col1,Col2排序下的排序值,也就是col1=4,col2=1在排序以后的位置
SELECT RANK(4,3) WITHIN GROUP (ORDER BY col1,col2) "Rank" FROM table;
结果如下:
Rank
4


dense_rank与rank()用法相当,但是有一个区别:dence_rank在并列关系是,相关等级不会跳过。rank则跳过

例如:表

    A B C
a          liu          wang
a          jin          shu
a          cai          kai
b          yang      du
b          lin          ying
b          yao        cai
b          yang      99

例如:当rank时为:

select m.a,m.b,m.c,rank() over(partition by a order by b) liu from test3 m

A          B             C          LIU
a          cai          kai          1
a          jin           shu        2
a          liu           wang     3
b          lin           ying        1
b          yang      du           2
b          yang      99           2
b          yao        cai           4

而如果用dense_rank时为:

select m.a,m.b,m.c,dense_rank() over(partition by a order by b) liu from test3 m

A          B             C          LIU
a          cai          kai          1
a          jin           shu        2
a          liu           wang     3
b          lin           ying        1
b          yang      du           2
b          yang      99           2
b          yao        cai           3




分享到:
评论

相关推荐

    oracle常用分析函数与聚合函数的用法

    今天小编就为大家分享一篇关于oracle常用分析函数与聚合函数的用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Oracle课件.pdf

    2.3聚合函数 . 3. 创建表和约束 3.1 Oracle常用数据类型 3.2创建表 3.3表的约束 4. 数据操作语言(DML) 4.1数据插入 4.2更新数据 4.3删除数据 4.4 TRUNCATE(DDL命令) 5. 操作符 5.1算术运算 5.2关系...

    oracle知识点介绍(基础)

    本文档为个人所学整理,有oracle基本知识和常用用法的详细说明,与初学者常见的错误举例。包括举例说明——安装与访问、oracle简单查询、单行函数、分组聚合函数、多表查询、子查询、DML(增删改)等知识点。

    Oracle的列转行问题

    网络上流传了很多将行数据转换称列数据的方法和应用实例,一般通过decode或者case函数与聚合函数联合实现功能,这里就不再重复。 日前本人在一个偶然的应用中用到了一个需要将列数据转换为行数据的问题。搜索了很久...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    8.4.1 跨越整个分区的聚合函数 201 8.4.2 细粒度窗口声明 201 8.4.3 默认窗口声明 202 8.5 Lead和Lag 202 8.5.1 语法和排序 202 8.5.2 例1:从前一行中返回一个值 203 8.5.3 理解数据行的位移 204 8.5.4 例2...

    oracle中where 子句和having子句中的区别介绍

    注:本文使用字段为oracle数据库中默认用户scott下面的emp表,sal代表员工工资,deptno代表部门编号。 一、聚合函数  说明前我们先了解下聚合函数:聚合函数有时候也叫统计函数,它们的作用通常是对一组数据的统

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    数据库表关联与模糊查询正则.md

    一.数据库表关联,二、聚合函数,三.oracle常用的函数,四.联合查询,五.分页查询, 六.exists 的用法:七.模糊查询

    非常全的oracle文档

    19.3. 聚合函数 109 19.4. 日期时间函数 110 19.5. 转换函数 111 19.6. 日期时间格式参数 113 19.7. 分析函数 114 19.8. 通用函数 115 19.9. GROUP BY子句 116 19.10. HAVING子句 117 19.11. 实用方法 118 19.12. ...

    cpp-常用的PostGIS的一些函数使用方法以及自定义函数

    常用的PostGIS的一些函数使用方法以及自定义函数,比如:pg连接oracle、pg连接sqlserver、导出csv、导入csv、查询XX米范围内数据、模糊查询、热力图聚合、生成扇形、生成栅格、生成泰森多边形、生成蜂巢图、裁剪...

    C#开发经验技巧宝典

    0890 如何使用聚合函数First或Last 523 19.7 子查询与连接查询 523 0891 union与连接之间的区别 523 0892 如何应用IN查询表中的记录信息 524 0893 使用一个单行的子查询来更新列 524 0894 使用IN引入子...

    程序员的SQL金典6-8

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    程序员的SQL金典7-8

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    程序员的SQL金典3-8

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    程序员的SQL金典4-8

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    程序员的SQL金典.rar

     9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防  10.1.1 SQL注入漏洞原理  10.1.2 过滤敏感字符  10.1.3 使用参数化SQL  10.2 SQL调优  10.2.1 SQL调优的基本原则  10.2.2 索引  ...

    精通sql结构化查询语句

    9.3.4 在内连接中使用聚合函数 9.4 外连接 9.4.1 左外连接 9.4.2 右外连接 9.4.3 全外连接 9.4.4 在外连接中使用聚合函数 9.5 交叉连接 9.5.l 交叉连接的定义 9.5.2 交叉连接举例 9.6 多表连接的综合应用 9.6.1 内...

Global site tag (gtag.js) - Google Analytics