Oracle分析函式-5
1. first_value()和last_value()
select fire_date,deptno,sum(sal),
first_value(sum(sal)) over(partition by fire_date order by sum(sal)) fir_sale,
first_value(sum(sal)) over(partition by fire_date order by sum(sal) desc) last_sale
from hyf_t
group by fire_date, deptno
FIRE_DATE | DEPTNO | SUM(SAL) | FIR_SALE | LAST_SALE |
200502 | 0 | 50 | 50 | 54 |
200502 | 1 | 51 | 50 | 54 |
200502 | 2 | 52 | 50 | 54 |
200502 | 3 | 53 | 50 | 54 |
200502 | 4 | 54 | 50 | 54 |
200503 | 1 | 101 | 101 | 250 |
200503 | 0 | 250 | 101 | 250 |
200504 | 2 | 102 | 102 | 104 |
200504 | 3 | 103 | 102 | 104 |
200504 | 4 | 104 | 102 | 104 |
顯示每月每部門SAL彙總,及SAL最高和最低的部門
first_value() 指的是分組排序後該組的第一條記錄,而last_value()指的是分組排序後該組的最後一條記錄.2. RANGE和ROWS引數的指定(必須與ORDER BY 一起使用)
前面我們所進行的操作都是當前行與該行前面的所有行進行了比較. 可我們有時候需要當前行與該行前面的N行範圍進行比較即可. 這裡需要RANGE和ROWS引數; rows和 ange 用法基本有以下四種,
rows 2 preceding 表示當前行以前該行的前兩行
rows between 2 preceding and 2 following 表示當前行,該行的前兩行以及該行的後丙行
range 20 preceding 表示當前行以前該行以前值範圍在20以內的.
range between 50 preceding and 10 following表示當前行以前該行以前和該行以後值範圍在50和10以內的.例:
select deptno,ename,sal,
min(sal) over(partition by deptno order by sal rows 2 preceding) min_sal,
count(*) over(partition by deptno order by sal rows between 2 preceding and 2 following) count1,
max(sal) over(partition by deptno order by sal range 20 preceding ) max_sal,
count(*) over(partition by deptno order by sal range between 50 preceding and 10 following) count_sal
from hyf_t
DEPTNO | ENAME | SAL | MIN_SAL | COUNT1 | MAX_SAL | COUNT_SAL |
0 | I_CDEF1 | 50 | 50 | 3 | 50 | 1 |
0 | TRUSTED_LIST$ | 100 | 50 | 4 | 100 | 2 |
0 | AUDIT$ | 150 | 50 | 4 | 150 | 2 |
0 | JOBSEQ | 200 | 100 | 3 | 200 | 2 |
1 | I_CDEF2 | 51 | 51 | 3 | 51 | 1 |
1 | PROPS$ | 101 | 51 | 4 | 101 | 2 |
1 | I_AUDIT | 151 | 51 | 4 | 151 | 2 |
1 | JOB$ | 201 | 101 | 3 | 201 | 2 |
2 | I_CDEF3 | 52 | 52 | 3 | 52 | 1 |
2 | COM$ | 102 | 52 | 4 | 102 | 2 |
2 | PENDING_TRANS$ | 152 | 52 | 4 | 以上MIN_SAL顯示了分組該行以及前兩行中最小的值. COUNT1顯示了分組該行以及前後兩行中的累計 Max_SAL顯示了分組該行以前範圍在20之前的最大值 來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/703656/viewspace-972638/,如需轉載,請註明出處,否則將追究法律責任。
上一篇:
Oracle分析函式-4
下一篇:
Oracle分析函式-6
請登入後發表評論
登入
全部評論
|
相關文章
- Oracle分析函式七——分析函式案例Oracle函式
- Oracle聚合函式/分析函式Oracle函式
- Oracle 分析函式Oracle函式
- Oracle分析函式Oracle函式
- oracle日期函式(5)Oracle函式
- oracle 分析函式(轉)Oracle函式
- oracle分析函式(一)Oracle函式
- Oracle常用分析函式Oracle函式
- Oracle分析函式{轉}Oracle函式
- Oracle分析函式-6Oracle函式
- Oracle分析函式-4Oracle函式
- Oracle分析函式-2Oracle函式
- Oracle分析函式-1Oracle函式
- Oracle分析函式-3Oracle函式
- Oracle分析函式與視窗函式Oracle函式
- 【分析函式】Oracle分析函式之LAG和LEAD函式Oracle
- Oracle 9i 分析函式參考手冊(5)Oracle函式
- oracle md5函式Oracle函式
- oracle 10g函式大全--分析函式Oracle 10g函式
- 聊聊Oracle排序分析函式Oracle排序函式
- oracle 統計分析函式Oracle函式
- ORACLE分析函式手冊Oracle函式
- Oracle 分析函式詳解Oracle函式
- Oracle 分析函式的使用Oracle函式
- oracle的分析函式over 及開窗函式Oracle函式
- ORACLE分析函式手冊(轉)Oracle函式
- ORACLE分析函式手冊二Oracle函式
- Oracle分析函式使用總結Oracle函式
- oracle分析函式_小貼(一)Oracle函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- ORACLE函式介紹第六篇 著名函式之分析函式Oracle函式
- oracle的分析函式over(Partition by...) 及開窗函式Oracle函式
- ORACLE分析函式手冊二(轉)Oracle函式
- oracle分析函式,keep and over解說Oracle函式
- Expert 101 Oracle 分析函式Oracle函式
- Oracle 分析函式使用介紹(轉)Oracle函式
- ORACLE函式介紹第七篇 非著名函式之分析函式Oracle函式
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式