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