SQL針對排序順序與數字
排序函數,故名思義就是依照順序給予號碼的函數,分為以下四種ROWNUM / ROW_NUMBER / RANK / DENSE_RANK
1.ROWNUM:Oracle常用之條件函數,用以限制輸出條件數量居多,不用以表示排序之因為不會依照Order by 條件改變號碼順序。
2.ROW_NUMBER:報表排序時愛用函數,可依照條件分層排序,也可以同時依照Order by 條件排序
ROW_NUMBER( ) OVER ([ query_partition_clause ] order_by_clause)
3.RANK:常用排序函數,同名次計數向後
RANK( ) OVER ([ query_partition_clause ] order_by_clause)
4.DENSE_RANK;同名次計數不動
DENSE_RANK( ) OVER([ query_partition_clause ] order_by_clause)
以FND的資料示範
SELECT ROWNUM row_num,
ROW_NUMBER() OVER(ORDER BY s_count) ROW_NUMBER,
RANK() OVER(ORDER BY s_count) RANK,
DENSE_RANK() OVER(ORDER BY s_count) DENSE_RANK,
a.*
FROM (SELECT menu_id,
COUNT(1) s_count
FROM fnd_menu_entries_vl
GROUP BY menu_id) a
ORDER BY a.s_count
執行結果