天天看點

Oracle中的within,oracle中within group的用法

within group語句和group by沒有半毛錢關系,隻是一些單值聚合函數的輔助關鍵字,下面以rank函數為例。

rank在oracle中分為聚合函數和分析函數兩種,本篇不介紹分析函數,參考分析函數篇章。

聚合函數的rank文法為:rank(expr1,expr2) within group (order by expr3,expr4 [desc/asc] nulls [first/last])

表示計算以expr3,expr4為排序條件的結果集中,expr3=expr1 and expr4=expr2的記錄排序号,傳回為數字類型。排序為非緊湊排序,即前兩條記錄相同,那麼排序号依次是1,1,3... 使用時無需一定要和group by搭配使用。

所謂觸類旁通,隻要知道within group在rank中的含義,那麼和其他函數一起使用時,也就無師自通了。

可以使用within group關鍵字的函數有rank,dense_rank,PERCENT_RANK,PERCENTILE_CONT,PERCENTILE_DISC等