oracle over函数简介:
http://blog.csdn.net/zljjava/article/details/8212253,
http://www.cnblogs.com/sumsen/archive/2012/05/30/2525800.html
实例(每个分组第一条记录):
获取每个分组(以DT.S_ACCNO,"SUBSTR"(DT.S_ACCDATE,1,6)分组),以DT.S_ACCNO,DT.S_ACCDATE 为倒序的排名第一的记录
SELECT dt.KJKMDM,dt.S_TRECODE,dt.S_ACCNO,dt.N_MONEYTODAY ,dt.S_ACCDATE, DF.GKJB FROM
(SELECT DM.KJKMDM,TI.S_TRECODE,TI.S_ACCNO,TI.N_MONEYTODAY ,TI.S_ACCDATE,RANK()
OVER (partition by TI.S_ACCNO,"SUBSTR"(TI.S_ACCDATE,1,6) ORDER BY TI.S_ACCNO,TI.S_ACCDATE DESC) AS rn FROM TIPS_LIB_INVENTORY_DAILY ti
LEFT JOIN DM_ACCOUNT dm ON DM.KJZH = TI.S_ACCNO) dt LEFT JOIN DM_FISC df ON DT.S_TRECODE = DF.GKDM WHERE rn=1
rank()排序函数根据partition by DT.S_ACCNO,"SUBSTR"(DT.S_ACCDATE,1,6) 分组,根据order by DT.S_ACCNO,DT.S_ACCDATE desc再排序
另一种方法取每个分组中的第一
SELECT dt.KJKMDM,dt.S_TRECODE,dt.S_ACCNO,dt.N_MONEYTODAY ,dt.S_ACCDATE, DF.GKJB FROM
(SELECT DM.KJKMDM,TI.S_ACCNO,TI.N_MONEYTODAY ,TI.S_ACCDATE,TI.S_TRECODE FROM
(select t.s_accdate, t.s_accno,t.n_moneytoday,t.S_TRECODE from tips_lib_inventory_daily t
inner join
(select substr(t.s_accdate,1,6) as month, [color=red]max(t.s_accdate)as s_accdate[/color] ,t.s_accno from tips_lib_inventory_daily t
[color=red]group by substr(t.s_accdate,1,6),t.s_accno) b
on t.s_accdate = b.s_accdate and t.s_accno = b.s_accno) ti
LEFT JOIN DM_ACCOUNT dm ON DM.KJZH = TI.S_ACCNO ) dt LEFT JOIN DM_FISC df ON DT.S_TRECODE = DF.GKDM ORDER BY DT.S_ACCNO,DT.S_ACCDATE
这种思想是,先求分组中的最大max(t.s_accdate)然后再去inner join取与最大值相等的记录
第二种方法速度更快,剔除了不必要的记录,第一种要对所有排序,再去每个分组的第一条记录
分享到:
相关推荐
ORACLE的OVER函数使用技巧ORACLE的OVER函数使用技巧ORACLE的OVER函数使用技巧
Oracle开发的over函数
介绍ORACLE分析函数的一些例子,对开发报表非常有帮助
oracle分析函数,oracle分析函数over_及开窗函数用法。
oracle分析函数,窗口函数,报表函数 分析函数(OVER) 分析函数2(Rank, Dense_rank, row_number) 分析函数3(Top/Bottom N、First/Last、NTile)
oracle的分析函数over 及开窗函数
oracle分析函数及开窗函数的使用,包括over等分析函数
Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法 Oracle分析函数参考手册 开窗函数(over)详解
oracle分析函数row_number() over()使用,很好的ORACLE分析函数
ORACLE中OVER函数的用法.doc
oracle开窗函数学习技巧总结,主要讲解over函数的使用的哦
主要包括分析函数(OVER);分析函数2(Rank, Dense_rank, row_number);分析函数3(Top/Bottom N、First/Last、NTile);窗口函数;报表函数;分析函数总结;26个分析函数;PLSQL开发笔记和小结;分析函数简述 ROW_NUMBER () ...
1 Oracle开发专题之:分析函数 OVER 2 Oracle开发专题之:分析函数 Rank Dense rank row number 3 Oracle开发专题之:分析函数3 Top Bottom N First Last NTile 4 Oracle开发专题之:窗口函数 5 Oracle开发专题...
第六篇 著名函数之分析函数 1、AVG([DISTINCT|ALL] expr) OVER(analytic_clause) 计算平均值。 例如: --聚合函数 SELECT col, AVG(value) FROM tmp1 GROUP BY col ORDER BY col; --分析函数 SELECT col, AVG(value)...
oracle数据仓库分析函数汇总:over oracle 分析函数 数据仓库:带了测试数据,由浅到深圳分析数据仓库的分析函数,是BI入门的好帮手
目录 Oracle开发专题之:分析函数(OVER) Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) Oracle开发专题之:分析函数3(Top/Bottom N、First/Last、NTile) Oracle开发专题之:窗口函数 ...
本文通过实例代码给大家介绍了oracle百分比分析函数RATIO_TO_REPORT() OVER(),代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下