ORACLE常用的函数
1. 窗口函数
-
RANK():计算带有重复值的排名,相同值将会得到相同的排名,并且在有相同排名的情况下,下一个排名将跳过相应数量的排名。
SELECT employee_id, name, department, sales_amount, RANK() OVER (PARTITION BY department ORDER BY sales_amount DESC) AS sales_rank FROM employees; 注:rank()函数只要遇到重复的数据排名就会放在最后
单重复: 单重复就放在最后
| employee_id | name | department | sales_amount | sales_rank |
|---|---|---|---|---|
| 1 | Alice | Sales | 5000 | 2 |
| 3 | Charlie | Sales | 5500 | 1 |
| 5 | Eve | Sales | 4500 | 3 |
| 6 | James | Marketing | 6500 | 1 |
| 7 | Jack | Marketing | 5500 | 2 |
| 2 | Bob | Marketing | 6000 | 3 |
| 4 | David | Marketing | 6000 | 3 |
**多重复:**有多重复的结果会进行重复结果排序
| Alice | Sales | 5000 | 2 | |
| 3 | Charlie | Sales | 5500 | 1 |
| 5 | Eve | Sales | 4500 | 3 |
| 6 | James | Marketing | 6500 | 1 |
| 2 | Bob | Marketing | 6000 | 2 |
| 4 | David | Marketing | 6000 | 2 |
| 8 | Jam | Marketing | 5500 | 4 |
| 7 | Jack | Marketing | 5500 | 4 |
- DENSE_RANK(): 类似于
RANK(),但是不会跳过相同排名的行,而是会依次分配紧邻的排名。
SELECT
student_id,
subject,
score,
DENSE_RANK() OVER (PARTITION BY subject ORDER BY score DESC) AS dense_rank
FROM scores;
本文介绍了Oracle数据库中的窗口函数RANK()和DENSE_RANK(),重点讲解了如何在处理重复值时进行排名,并通过实例演示了两者的区别。单重复和多重复情况下的应用也做了说明。
855

被折叠的 条评论
为什么被折叠?



