除了RANK OVERROW_NUMBER之外,Oracle 数据库还提供了许多其他函数,下面是一些示例:

  1. DENSE_RANK OVER:与RANK OVER类似,但对于相同的值返回相同的排名,没有空隙。
SELECT emp_name, emp_salary, DENSE_RANK() OVER (ORDER BY emp_salary DESC) AS dense_rank
FROM employees;
  1. NTILE:将结果集分成n个等份,并为每个等份分配一个编号。
SELECT emp_name, emp_salary, NTILE(4) OVER (ORDER BY emp_salary DESC) AS quartile
FROM employees;
  1. LAG:获取前一行的值。
SELECT emp_name, emp_salary, LAG(emp_salary) OVER (ORDER BY emp_salary) AS prev_salary
FROM employees;
  1. LEAD:获取下一行的值。
SELECT emp_name, emp_salary, LEAD(emp_salary) OVER (ORDER BY emp_salary) AS next_salary
FROM employees;
  1. 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;
  1. 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 数据库中可用的窗口函数的示例,还有其他更多的窗口函数可以根据需要使用。

Oracle 窗口函数:除了 RANK OVER 和 ROW_NUMBER 之外的其他函数

原文地址: https://www.cveoy.top/t/topic/bln7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录