[轉]分析函式 last_value的使用
分析函式 last_value的使用
今日,一同事使用了last_value來獲取本組的最後一行的值,但是結果與預期的不同,如下:
create table t_last_value (id number , sal number) ;
insert into t_last_value values (1,1) ;
insert into t_last_value values (1,2) ;
insert into t_last_value values (1,3) ;
insert into t_last_value values (2,3) ;
insert into t_last_value values (2,4) ;
insert into t_last_value values (2,5) ;
commit ;
SQL> select id ,
2 last_value(sal) over(partition by id order by sal) last_value
3 from t_last_value;
ID LAST_VALUE
---------- ----------
1 1
1 2
1 3 2 3
2 4
2 5
6 rows selected.
再執行下面的語句,
SQL> select id ,
2 first_value(sal) over(partition by id order by sal) first_value
3 from t_last_value
4 /
ID FIRST_VALUE
---------- -----------
1 1
1 1
1 1
2 3
2 3
2 3
6 rows selected.
結果正確。但為什麼last_value的執行不是預期的結果那?
查了下資料,結果是這樣:
在使用分析函式的時候,預設的WINDOWING範圍是RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,
呵呵,就是這個原因了,當使用last_value分析函式的時候,在進行比較的時候從當前行向前進行比較,
所以前面的語句執行的結果是正確,但不是預期的
SQL> select id ,
2 first_value(sal) over(partition by id order by sal
3 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) last_value
4 from t_last_value
5 /
ID LAST_VALUE
---------- ----------
1 1
1 1
1 1
2 3
2 3
2 3
6 rows selected.
呵呵,得到預期的結果了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133835/viewspace-929648/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Analytic】分析函式之LAST_VALUE函式函式AST
- 分析函式——FIRST_VALUE()和LAST_VALUE()函式AST
- Oracle分析函式-first_value()和last_value()Oracle函式AST
- Oracle 分析函式使用介紹(轉)Oracle函式
- Oracle 分析函式的使用Oracle函式
- oracle 分析函式(轉)Oracle函式
- Oracle分析函式{轉}Oracle函式
- ORACLE分析函式手冊(轉)Oracle函式
- 【轉】分析函式語法解析函式
- Oracle分析函式RANK(),ROW_NUMBER(),LAG()等的使用方法(轉)Oracle函式
- 使用bcc分析函式耗時函式
- Oracle分析函式使用總結Oracle函式
- ORACLE分析函式手冊二(轉)Oracle函式
- Oracle分析函式七——分析函式案例Oracle函式
- 回撥函式快速使用 (轉)函式
- Oracle聚合函式/分析函式Oracle函式
- 分析函式函式
- 成員函式的說明和使用(轉)函式
- Oracle開發專題之:分析函式的使用Oracle函式
- oracle的分析函式over 及開窗函式Oracle函式
- C++的函式和模板函式 (轉)C++函式
- 分析函式的學習函式
- 分析函式中的KEEP函式
- 函式: 函式是怎麼使用的?函式
- 函式式 Java 到函式式 Kotlin 的轉換函式JavaKotlin
- 用ORACLE分析函式實現行列轉換Oracle函式
- Oracle分析函式參考手冊(轉)一Oracle函式
- Oracle分析函式參考手冊(轉)二Oracle函式
- 用oracle分析函式進行行列轉向Oracle函式
- 【分析函式】Oracle分析函式之LAG和LEAD函式Oracle
- 分析函式概述函式
- 分析函式 over函式
- Oracle 分析函式Oracle函式
- 分析函式 - LAG函式
- Oracle分析函式Oracle函式
- 不使用分析函式的累計統計查詢函式
- Oracle分析函式與視窗函式Oracle函式
- 【Analytic】分析函式之MIN函式函式