oracle function6,ORACLE函数介绍(6)-分析函数-ZT

ORACLE函数介绍

第六篇著名函数之分析函数2007.8.28

1、AVG([DISTINCT|ALL]

expr) OVER(analytic_clause)计算平均值。

例如:

--聚合函数

SELECTcol,AVG(value)FROMtmp1GROUPBYcolORDERBYcol;

--分析函数

SELECTcol,AVG(value) OVER(PARTITIONBYcolORDERBYcol)

FROMtmp1

ORDERBYcol;

2、SUM ( [

DISTINCT | ALL ] expr ) OVER ( analytic_clause )

例如:

--聚合函数

SELECTcol,sum(value)FROMtmp1GROUPBYcolORDERBYcol;

--分析函数

SELECTcol,sum(value) OVER(PARTITIONBYcolORDERBYcol)

FROMtmp1

ORDERBYcol;

3、COUNT({* |

[DISTINCT | ALL] expr}) OVER (analytic_clause)查询分组序列中各组行数。

例如:

--分组查询col的数量

SELECTcol,count(0) over(partitionbycolorderbycol) ctFROMtmp1;

4、FIRST()从DENSE_RANK返回的集合中取出排在第一的行。

例如:

--聚合函数

SELECTcol,

MIN(value)KEEP(DENSE_RANKFIRSTORDERBYcol) "Min Value",

MAX(value)KEEP(DENSE_RANKLASTORDERBYcol) "MaxValue"

FROMtmp1

GROUPBYcol;

--分析函数

SELECTcol,

MIN(value)KEEP(DENSE_RANKFIRSTORDERBYcol) OVER(PARTITIONBYcol),

MAX(value)KEEP(DENSE_RANKLASTORDERBYcol) OVER(PARTITIONBYcol)

FROMtmp1

ORDERBYcol;

可以看到二者结果基本相似,但是ex1的结果是group by后的列,而ex2则是每一行都有返回。

5、LAST()与上同,不详述。

例如:见上例。

6、FIRST_VALUE

(col) OVER ( analytic_clause )返回over()条件查询出的第一条记录

例如:

insertintotmp1values('test6','287');

SELECTcol,

FIRST_VALUE(value) over(partitionbycolorderbyvalue) "First",

LAST_VALUE(value) over(partitionbycolorderbyvalue) "Last"

FROMtmp1;

7、LAST_VALUE

(col) OVER ( analytic_clause )返回over()条件查询出的最后一条记录

例如:见上例。

8、LAG(col[,n][,n])

over([partition_clause] order_by_clause) lag是一个相当有意思的函数,其功能是返回指定列col前n1行的值(如果前n1行已经超出比照范围,则返回n2,如不指定n2则默认返回null),如不指定n1,其默认值为1。

例如:

SELECTcol,

value,

LAG(value) over(orderbyvalue) "Lag",

LEAD(value) over(orderbyvalue) "Lead"

FROMtmp1;

9、LEAD(col[,n][,n])

over([partition_clause] order_by_clause)与上函数正好相反,本函数返回指定列col后n1行的值。

例如:见上例

10、MAX (col)

OVER (analytic_clause)获取分组序列中的最大值。

例如:

--聚合函数

SELECTcol,

Max(value) "Max",

Min(value) "Min"

FROMtmp1

GROUPBYcol;

--分析函数

SELECTcol,

value,

Max(value) over(partitionbycolorderbyvalue) "Max",

Min(value) over(partitionbycolorderbyvalue) "Min"

FROMtmp1;

11、MIN (col)

OVER (analytic_clause)获取分组序列中的最小值。

例如:见上例。

12、RANK()

OVER([partition_clause] order_by_clause)关于RANK和DENSE_RANK前面聚合函数处介绍过了,这里不废话不,大概直接看示例吧。

例如:

insertintotmp1values('test2',120);

SELECTcol,

value,

RANK()

OVER(orderbyvalue) "RANK",

DENSE_RANK() OVER(orderbyvalue) "DENSE_RANK",

ROW_NUMBER() OVER(orderbyvalue) "ROW_NUMBER"

FROMtmp1;

13、DENSE_RANK ()

OVER([partition_clause] order_by_clause)

例如:见上例。

14、ROW_NUMBER ()

OVER([partition_clause] order_by_clause)这个函数需要多说两句,通过上述的对比相信大家应该已经能够看出些端倪。前面讲过,dense_rank在做排序时如果遇到列有重复值,则重复值所在行的序列值相同,而其后的序列值依旧递增,rank则是重复值所在行的序列值相同,但其后的序列值从+重复行数开始递增,而row_number则不管是否有重复行,(分组内)序列值始终递增

例如:见上例。

VINS技术路线与代码详解 VINS技术路线 写在前面:本文整和自己的思路,希望对学习VINS或者VIO的同学有所帮助,如果你觉得文章写的对你的理解有一点帮助,可以推荐给周围的小伙伴们,当然,如果你有任何问题想要交流,欢迎随时探讨。话不多说,下面上正文。 VINS代码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono 参考文档:1.VINS-Mono A R... 阅读详情

相关推荐

电子电器架构 --- OEM企标中规定ECU启动时间的目的

电子电器架构 --- OEM企标中规定ECU启动时间的目的

Soly_kun的博客 209

mysql怎么显示结果窗口_mysql8中窗口函数

在以前的MySQL版本中是没有窗口函数的,直到MySQL8.0才引入了窗口函数。窗口函数是对查询中的每一条记录执行一个计算,并且这个计算结果是用与该条记录相关的多条记录得到的。1.窗口函数与聚合函数窗口函数与聚合函数很像,他们都是在一组记录而不是整张表上执行的。但是,一个聚合函数在一组记录执行后只返回一条结果而窗口函却会对改分组内的每行记录都返回一个结果。2.常见的窗口函数MySQL8.0中定义的...

weixin_35143292的博客 860

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 304

怎样在Java的环境下连接Oracle数据库及如何调用数据库中的Procedure和Function ZT

1.在Java(Eclipse)的环境中连接Oracle数据库:1.加载oracle中的驱动程序:class.forName (oracle.jdbc.driver.OracleDriver”).newInstance ();2.输入想要访问的数据库的正确的URL:jdbc:oracle:thin:@localhost:1521:oracle_name (1521端口号是oracle默认

wish_silence的专栏 2527

ORACLE不定列行列转换(ZT)

如c1 c2--------------1 我1 是1 谁2 知2 道3 不……转换为1 我是谁2 知道3 不这一类型的转换必须借助于PL/SQL来完成,这里给一个例子CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER)RETURN VARCHAR2ISCol_c2 VARCHAR2(4000);BEGINFOR cur IN (SELECT c2 FR

王涛的BLOG 2970

[zt] Oracle不使用索引的几种情况

Oracle不使用b*tree索引的情况大致如下 1:where条件中和null比较可能导致不使用索引 2:count,sum,ave,max,min等聚集操作时可能导致不使用索引 3:显示或者隐式的函数转换导致不使用索引...

cuixie2370的博客 198

Oracle 数据字典大全 ZT

作者: yuchengzhong(http://yuchengzhong.itpub.net)发表于:2008.08.22 17:27分类: Oracle 出处:http://yuchengzhong.itpub.net/pos...

csdn_201601的博客 147

oracle与unix时间的转换 zt

http://www.itwenzhai.com/data/2006/0523/article_8484.htmCREATE OR REPLACE FUNCTION unix_to_oracle(in_number NUMBER...

cuiqingko849622的博客 362

Oracle发送邮件procedure (zt)

.[@more@]CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT VARCHAR2, ...

cuixie2370的博客 349

oracle中字符串分解为数组并遍历数组插入表中

1、定义一个自定义类型CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000); 2、定义一个函数复制代码 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_split PI

Qiu@SmileToLife的博客 1658

Oracle DBMS_APPLICATION_INFO 用法例子(ZT)

Application developers can use the DBMS_APPLICATION_INFO package with Oracle Trace and the SQL trace facility to r...

ckomuo086028的博客 360

Oracle 11g oracle 用户密码过期问题 (ZT)

http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html Oracle 11g 之前默认的用户时是没有密码过期的限制的,在Oracle 11g 中默认的profile启用了密码过期时间是180天。如下: select * from dba_profiles where profile='DEFAULT' and re...

weixin_30410999的博客 93

oracle sql 生成重复字符串,SQL高手帮忙,由多行生成字符串,该如何解决

当前位置:我的异常网» Oracle开发»SQL高手帮忙,由多行生成字符串,该如何解决SQL高手帮忙,由多行生成字符串,该如何解决www.myexceptions.net网友分享于:2013-01-16浏览:51次SQL高手帮忙,由多行生成字符串有表A:orderNo frameId qty001 1-001 ...

weixin_35969301的博客 499

Oracle使用游标批量更新表数据

Oracle使用游标批量更新表数据: BEGIN FOR JSC IN ( SELECT JS.* FROM SF_JMMJJS_T JS,SF_EBZCB_T CB,SF_JMYH_T YH WHERE JS.YHBH=CB.YHBH AND JS.MJBH=CB.MJBH AND JS.CNQ=CB.CNQ AND JS.YHBH=YH.YHBH AND JS....

ptsx0607的专栏 5065

行列转换总结-ZT

行列转换总结Caizhuoyi1.概述最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换的相关知识做了一个总结,希望对大家有所帮助,同时有何错疏,恳请大家指出,我也是在写作过程中学习,算是一起和大家学习吧!行列转换包括以...

ctze5992的博客 458

银行日间扎帐-ORACLE存储过程(ZT)

采用建立临时表CUJNCT,每次调用时统计数据后放入到临时表,然后再从临时表中选择数据传输到网点终端存储过程代码如下: CREATE OR REPLACE FUNCTION "SP_OVERDAY" (          v_bank_cd_IN   NUMBER,          v_sbank_cd_IN  NUMBER,          v_hl_date_IN   CHAR,    ...

weixin_34032779的博客 176

oracle存储过程 switch,如何恢复DROP的存储过程

如何恢复DROP的存储过程--此方法,适用开启归档模式的Oracle 数据库当你DROP掉存储过程时,首先SQL>drop procedure select_data;SQL> alter system switch logfile;--切换日志系统已更改。查看flash_recovery_area文件下下最新的归档日志SQL> conn sys as sysdba;--使用sy...

weixin_35715190的博客 326

推荐一个很小巧的oracle转mysql的工具

需要把项目迁移到一个mysql的数据库里<br />找了一个小工具,做表和数据的迁移,这个只能迁移表和数据<br />不包括view,sequence,sp,function.package等。<br /><br />ora2mysqcn.exe <br />ora2mysqcn.exe (1.63 MB) 下载次数: 0<br />4 天前 00:45<br /><br />工具很方便。<br /><br />下载 (46.19 KB)<br />4 天前 00:47<br /><br />下载 (40

3432

expdp的一些限制(ZT

1,语法expdp help=yimpdp help=ygrant create any directory to xxx ;grant read ,write on directory dump_pgbb to xxx;gr...

1209

Like 的优化 (zt)

简单说两句,具体看例子1。尽量不要使用 like '%..%' 2。对于 like '..%..' (不以 % 开头)Oracle可以应用 colunm上的index3。对于 like '%...' 的 (不以 % 结尾),可...

cuixie2370的博客 276
上一篇: oracle 闪回区 删除,oracle闪回区存储空间耗尽解决方法(ORA-19815解决方法)
下一篇: oracle exp &gt;,oracle 逻辑备份命令EXP/IMP参数参考手册
DeepIndaba
博客等级 码龄6年 49粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值