[轉]分析函式 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle分析函式-first_value()和last_value()Oracle函式AST
- ORACLE分析函式手冊(轉)Oracle函式
- ORACLE分析函式手冊二(轉)Oracle函式
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- 函式: 函式是怎麼使用的?函式
- Oracle分析函式與視窗函式Oracle函式
- 使用SQL以及函式等做資料分析SQL函式
- Shell 函式的使用函式
- Thunk函式的使用函式
- Generator 函式的使用函式
- (未完成)APC函式的執行,分析 KiDeliverApc 函式函式IDE
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- hive視窗分析函式使用詳解系列二之分組排序視窗函式Hive函式排序
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- Hive之分析函式Hive函式
- hive視窗分析函式使用詳解系列一Hive函式
- ORALCE函式:LAG()和LEAD() 分析函式詳解函式
- 高階函式的使用函式
- tap函式的日常使用函式
- python函式的基本使用Python函式
- Data Lake Analytics的Geospatial分析函式函式
- 第五篇 匿名函式、內建函式、import的使用、包的使用函式Import
- SqlServer中將字串轉utf-8的函式、支援中文的UrlEncode函式SQLServer字串函式
- oracle函式手冊(轉)Oracle函式
- Hive行轉列函式Hive函式
- 全形轉半形函式函式
- 何時使用函式表示式與函式宣告函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- 轉載:在c#中使用sqlite的3種自定義函式C#SQLite函式
- Python hasattr() 函式 // python中hasattr()、getattr()、setattr()函式的使用Python函式
- MySQL分析函式實現MySql函式
- Linux中select()函式分析Linux函式
- count 函式原始碼分析函式原始碼
- SQL視窗分析函式使用詳解系列三之偏移量類視窗函式SQL函式
- edge函式使用函式
- 排名前100的PHP函式及分析PHP函式
- Linux下getopt函式的使用Linux函式
- 05_jQuery函式的使用jQuery函式
- confusion_matrix函式的使用函式