[SQL]排序函數

  • 5757
  • 0
  • sql
  • 2018-05-08

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

執行結果

​​