MEDIAN
功能描述
计算中位数。
语法格式
MEDIAN(expr) [ OVER (query_partition_clause) ]
参数说明
expr
:列名或表达式,用来指定输入数据。- 如果输入数据为奇数行,则结果为位于中间行的值。
- 如果输入数据为偶数行,则结果为位于中间两行的均值。
OVER (query_partition_clause)
为可选的表达式,用于分析函数。query_partition_clause
是常用的分析类语句,如PARTITION BY
等。
函数返回类型
NUMERIC类型。
示例
sql
SQL> CREATE TABLE employees (
employee_id INT IDENTITY(1,1) PRIMARY KEY,
manager_id INT NOT NULL,
last_name VARCHAR(50) NOT NULL,
hire_date DATE NOT NULL,
salary NUMERIC(10, 2) NOT NULL
);
SQL> INSERT INTO employees (manager_id, last_name, hire_date, salary) VALUES
(100, 'De Haan', TO_DATE('2001-01-13', 'YYYY-MM-DD'), 17000),
(100, 'Raphaely', TO_DATE('2002-12-07', 'YYYY-MM-DD'), 11000),
(100, 'Kaufling', TO_DATE('2003-05-01', 'YYYY-MM-DD'), 7900),
(100, 'Hartstein', TO_DATE('2004-02-17', 'YYYY-MM-DD'), 13000),
(100, 'Weiss', TO_DATE('2004-07-18', 'YYYY-MM-DD'), 8000),
(100, 'Russell', TO_DATE('2004-10-01', 'YYYY-MM-DD'), 14000);
聚合函数
sql
SQL> SELECT MEDIAN(salary) FROM employees WHERE employee_id > 1;
EXPR1 |
------------------------------------------------------------------------------
11000|
分析函数
sql
SQL> SELECT manager_id, salary,
MEDIAN(salary) OVER (PARTITION BY manager_id) "DEPT MEDIAN SALARY"
FROM employees
ORDER BY manager_id, salary;
MANAGER_ID | SALARY | DEPT MEDIAN SALARY |
------------------------------------------------------------------------------
100 | 7900| 12000|
100 | 8000| 12000|
100 | 11000| 12000|
100 | 13000| 12000|
100 | 14000| 12000|
100 | 17000| 12000|