分析函式DENSE_RANK 和 RANK
分析函式DENSE_RANK 和 RANK
在SQL中對錶格資料排名時,常可以用到分析排名函式,但Oracle在排名上有兩種不同的函式:dense_rank和rank。
這兩種函式在分析的用途上大同小異,主要區別在於對相同資料的排名。
實際舉例如下。
列出示例資料:
SQL> Select rownum id from dual connect by rownum<5
2 union all
3 select rownum id from dual connect by rownum<3;
ID
----------
1
2
3
4
1
2
6 rows selected
可見資料上id為1,2的都重複了,那麼它們的排名應該是一樣的,那麼id為3的話,應該排第幾位呢。
注意以下dense_rank和rank在對id為3的排名的區別。
SQL> with t as (
2 select rownum id from dual connect by rownum<5
3 union all
4 select rownum id from dual connect by rownum<3)
5 select dense_rank() over (order by id) rank,
6 id
7 from t;
RANK ID
---------- ----------
1 1
1 1
2 2
2 2
3 3
4 4
6 rows selected
SQL> with t as (
2 select rownum id from dual connect by rownum<5
3 union all
4 select rownum id from dual connect by rownum<3)
5 select rank() over (order by id) rank,
6 id
7 from t;
RANK ID
---------- ----------
1 1
1 1
3 2
3 2
5 3
6 4
6 rows selected
可見dense_rank在處理重複資料的排名時,屬於密集型排名,而rank則不是。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10009036/viewspace-1061589/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rank,dense_rank,row_number 分析函式函式
- 【SQL 學習】分析函式之RANK() DENSE_RANK ()SQL函式
- oracle分析函式Rank, Dense_rank, row_numberOracle函式
- 分析函式rank,dense_rank,row_number使用和區別 .函式
- 【Analytic】分析函式之DENSE_RANK函式函式
- 分析函式——排序排列(rank、dense_rank、row_number)函式排序
- oracle 分析函式之(rank()/dense_rank()/row_number())Oracle函式
- 分析函式——keep(dense_rank first/last)函式AST
- Oracle 中分析函式用法之--rank(),dense_rank(),partition,over()Oracle函式
- Spark2 Dataset分析函式--排名函式row_number,rank,dense_rank,percent_rankSpark函式
- 分析函式中rank(),row_number(),dense_rank()的區別函式
- oracle中聚合函式RANK和dense_rank的使用(轉)Oracle函式
- rank() 與dense_rank()分析
- 有關oracle中聚合函式rank和dense_rank的使用Oracle函式
- Oracle vs PostgreSQL Develop(14) - 分析函式KEEP DENSE_RANKOracleSQLdev函式
- SQL SERVER 排序函式ROW_NUMBER、RANK、DENSE_RANK、NTILESQLServer排序函式
- lead lag rank()over()dense_rank()row_number()over()rollupcube幾大分析函式函式
- mysql自動排序函式dense_rank() over()、rank() over()、row_num() over()用法和區別MySql排序函式
- 【Analytic】分析函式之RANK函式函式
- 分析函式rank() row_number函式
- Oracle:Rank,Dense_Rank,Row_Number比較Oracle
- Hive中row_number()、dense_rank()、rank()的區別Hive
- row_number() over,rank() over,dense_rank() over的區別
- RANK函式小結函式
- CUME-DIST()和PERCENT-RANK()函式函式
- [原創] 小議rank(),dense_rank(),row_number()使用與區別
- 【函式】Oracle中聚合函式rank()使用方法函式Oracle
- 【SQL】Lag/Rank/Over視窗函式揭秘,資料分析之旅SQL函式
- oracle聚合函式rank()的用法和一些體會Oracle函式
- Oracle分析函式RANK(),ROW_NUMBER(),LAG()等的使用方法(轉)Oracle函式
- 【分析函式】Oracle分析函式之LAG和LEAD函式Oracle
- RANK函式基於條件的查詢函式
- ORALCE函式:LAG()和LEAD() 分析函式詳解函式
- Oracle分析函式七——分析函式案例Oracle函式
- 分析函式 - CUBE和GROUPING SETS函式
- 分析函式 - ROLLUP和GROUPING SETS函式
- sum()over()和count()over()分析函式函式
- Oracle聚合函式/分析函式Oracle函式