Oracle 窗口函数:除了 RANK OVER 和 ROW_NUMBER 之外的其他函数
除了RANK OVER和ROW_NUMBER之外,Oracle 数据库还提供了许多其他函数,下面是一些示例:
DENSE_RANK OVER:与RANK OVER类似,但对于相同的值返回相同的排名,没有空隙。
SELECT emp_name, emp_salary, DENSE_RANK() OVER (ORDER BY emp_salary DESC) AS dense_rank
FROM employees;
NTILE:将结果集分成n个等份,并为每个等份分配一个编号。
SELECT emp_name, emp_salary, NTILE(4) OVER (ORDER BY emp_salary DESC) AS quartile
FROM employees;
LAG:获取前一行的值。
SELECT emp_name, emp_salary, LAG(emp_salary) OVER (ORDER BY emp_salary) AS prev_salary
FROM employees;
LEAD:获取下一行的值。
SELECT emp_name, emp_salary, LEAD(emp_salary) OVER (ORDER BY emp_salary) AS next_salary
FROM employees;
FIRST_VALUE:获取分组中的第一个值。
SELECT emp_name, emp_salary, FIRST_VALUE(emp_salary) OVER (PARTITION BY department_id ORDER BY emp_salary) AS first_salary
FROM employees;
LAST_VALUE:获取分组中的最后一个值。
SELECT emp_name, emp_salary, LAST_VALUE(emp_salary) OVER (PARTITION BY department_id ORDER BY emp_salary) AS last_salary
FROM employees;
这些只是一些 Oracle 数据库中可用的窗口函数的示例,还有其他更多的窗口函数可以根据需要使用。
原文地址: https://www.cveoy.top/t/topic/bln7 著作权归作者所有。请勿转载和采集!