within group語句和group by沒有半毛錢關係,只是一些單值聚合函數的輔助關鍵字,下面以rank函數爲例。oracle
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等排序