oracle中分組排序統計

2021-06-29 01:44:40 字數 478 閱讀 3794

有3個函式可以實現

rank()  over()

dense()  over()

row_number  over()

其中 over(partition by ***, order by ***)可以實現分組排序,給其設定別名

例如 num 後,加入條件 where  num=1 , 可以實現只顯示每組排名第一的結果

rank()等函式用作記名次,其中區別:

rank()相同值名次會並列,且下一名次將會被跳過

dense()相同只名次會並列,且下一名次不會被跳過

row_number()不會並列名次,按正常順序排序

舉一例:

select * from (

select  name,***,age,rank() over(partition by age, order by age)  num from table ) where num=1 ;

Oracle 中分組排序取值的問題

建表語句 create table exam name varchar2 32 subject varchar2 32 score integer 資料 insert into exam values 趙柳 數學 71 insert into exam values 張三 數學 81 insert ...

oracle中分組排序並取最大值

最近工作中需要聯合查詢幾個表中的資料,並且需要分組查詢並取得每個組中的最大值,使用到了乙個之前沒有用過的oracle函式,分組排序函式。分組排序函式可以滿足以下需求 1 要求取出按field1分組後,並在每組中按照field2排序 2 亦或更加要求取出1中已經分組排序好的前多少行的資料 分組排序函式...

oracle中分組排序並取最大值

最近工作中需要聯合查詢幾個表中的資料,並且需要分組查詢並取得每個組中的最大值,使用到了乙個之前沒有用過的oracle函式,分組排序函式。分組排序函式可以滿足以下需求 1 要求取出按field1分組後,並在每組中按照field2排序 2 亦或更加要求取出1中已經分組排序好的前多少行的資料 分組排序函式...