oracle rank() 函數通過指定的排序字段對數據集進行排名,從 1 開始分配排名。用法示例:sql select employee_id, name, salary, rank() over (order by salary asc) as salary_rank from employees;
Oracle RANK() 函數的使用
RANK() 函數在 Oracle 中是一個分析函數,用于對一組行進行排名。排名從 1 開始,根據指定排序條件的升序或降序順序分配。
語法:
RANK() OVER ( [PARTITION BY 分區子句] ORDER BY 排序字段 [ASC|DESC] )
登錄后復制
參數:
PARTITION BY 分區子句:可選,將數據集劃分為不同的組,對每個組進行單獨排名。
ORDER BY 排序字段:用于確定排名的排序字段。
ASC|DESC:可選,指定是升序還是降序排名(默認升序)。
用法:
RANK() 函數通常與其他分析函數(如 ROW_NUMBER() 或 DENSE_RANK())結合使用,以提供靈活的排名選項。
示例:
以下示例按 “salary” 字段升序對 “employees” 表中的員工進行排名:
SELECT employee_id, name, salary, RANK() OVER (ORDER BY salary ASC) AS salary_rank FROM employees;
登錄后復制
結果將顯示每個員工的員工 ID、姓名、薪水和薪水排名。
注意:
RANK() 函數對重復值分配相同的排名。
如果未指定 PARTITION BY 子句,則對整個數據集進行排名。
如果未指定 ORDER BY 子句,則按表的默認排序順序進行排名。
RANK() 函數對 NULL 值執行特殊處理,將它們歸為最后一名。