`RANK()` 是 Oracle 數據庫中的一個窗口函數,用于給查詢結果集中的行賦予排名。它的作用是根據指定的排序條件對每行進行排名,并為每個行指定一個唯一的排名值。
具體來說,`RANK()` 函數會根據 ORDER BY 子句中指定的列對結果集進行排序,并根據排序結果為每一行分配一個排名值。如果存在相同的排序值,則會出現并列排名。排名值是連續整數,不會有間隔。
以下是 `RANK()` 函數的一般語法:
```sql
RANK() OVER (PARTITION BY expr1, expr2,... ORDER BY col1, col2,...)
```
- `PARTITION BY` 子句可選,用于將結果集劃分為多個分區,每個分區內獨立計算排名。
- `ORDER BY` 子句是必需的,用于指定排序順序和列。
- `RANK()` 函數返回結果集中每行的排名值。
舉例說明:
假設有如下員工表 `employees`:
| employee_id | employee_name | salary |
|-------------|---------------|--------|
| 1 | Alice | 5000 |
| 2 | Bob | 6000 |
| 3 | Carol | 5500 |
要查詢員工表中員工的薪資排名,可以使用以下 SQL 查詢語句:
```sql
SELECT employee_id, employee_name, salary, RANK() OVER (ORDER BY salary DESC) as salary_rank
FROM employees;
```
上述查詢會按照薪資從高到低對員工進行排名,并在結果集中添加一個名為 `salary_rank` 的列,顯示每個員工的薪資排名。