首頁 >資料庫 >SQL >sql中rank的用法

sql中rank的用法

下次还敢
下次还敢原創
2024-05-02 02:30:251180瀏覽

SQL 中 RANK 函數根據指定列排序後對行進行排名,結果集傳回每個行的排名,從 1 開始,相同值具有相同排名。分區表達式可指定分區列,僅在每個分區內進行排名,排序表達式指定排序列,排名依此列資料順序決定。

sql中rank的用法

SQL 中RANK 函數的用法

RANK 函數用於對一組行進行排名,根據指定列中數據的順序。它是一個聚合函數,會在聚合後的結果集中傳回每個行的排名。

語法

<code>RANK() OVER (PARTITION BY partition_expression ORDER BY order_expression)</code>

參數

  • #partition_expression: 可選,指定分區列。如果指定,則排名只在每個分區內進行。
  • order_expression: 指定排序列。行的排名將根據此列中資料的順序決定。

傳回值

RANK 函數傳回一個整數,表示每個行的排名。排名從 1 開始,排在第一位的行具有最高的排名。如果多行具有相同的值,則它們將具有相同的排名。

範例

<code class="sql">SELECT department_id, employee_name, RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank
FROM employee_table;</code>

結果

<code>department_id | employee_name | rank
------------- | ------------- | ----
1             | John Smith    | 1
1             | Jane Doe      | 2
2             | Peter Parker  | 1
2             | Mary Johnson | 2</code>

在這個範例中,我們對employee_table 按下department_id 分區並依salary 降序排序。對於每個部門,員工會根據其薪資進行排名。

注意

  • 如果未指定分割區表達式,則排名將在整個表中進行。
  • RANK 函數對重複值敏感。如果多行具有相同的值,則它們將具有相同的排名。
  • RANK 函數與 DENSE_RANK 函數類似,但 DENSE_RANK 函數不會跳過重複值的排名。

以上是sql中rank的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn