MEDIAN
📄字数 753
👁️阅读量 加载中...
功能描述
计算指定列或表达式在数据集中的中位数。
语法格式
sql
MEDIAN (expr1) [OVER ([analytic_clause])]
输入参数
expr1
:列名或表达式,用来指定输入数据。OVER ([analytic_clause])
:可选的分析子句,支持分组子句,排序子句以及范围子句,详情见analytic_clause。
输出结果
NUMERIC
数值类型,任意参数为 NULL
时,输出参数为 NULL
,如果输入数据为奇数行,则结果为位于中间行的值,如果输入数据为偶数行,则结果为位于中间两行的均值。
示例
sql
-- 建表并插入数据
SQL> CREATE TABLE emp
(
empno INT PRIMARY KEY,
ename VARCHAR(10),
deptno INT,
sal DECIMAL(10,2),
hiredate DATE
);
SQL> INSERT INTO emp VALUES
(7369, 'SMITH', 20, 800, TO_DATE('17-12-1980', 'DD-MM-YYYY')),
(7499, 'ALLEN', 30, 1600, TO_DATE('20-2-1981', 'DD-MM-YYYY')),
(7521, 'WARD', 30, 1250, TO_DATE('22-2-1981', 'DD-MM-YYYY')),
(7566, 'JONES', 20, 2975, TO_DATE('2-4-1981', 'DD-MM-YYYY')),
(7654, 'MARTIN', 30, 1250, TO_DATE('28-9-1981', 'DD-MM-YYYY'));
-- 计算指定列或表达式在数据集中的中位数。
SQL> SELECT empno, ename, deptno, sal, MEDIAN(sal) OVER (PARTITION BY deptno) FROM emp ORDER BY deptno, sal DESC;
+-------+--------+--------+------+--------+
| EMPNO | ENAME | DEPTNO | SAL | EXPR1 |
+-------+--------+--------+------+--------+
| 7566 | JONES | 20 | 2975 | 1887.5 |
| 7369 | SMITH | 20 | 800 | 1887.5 |
| 7499 | ALLEN | 30 | 1600 | 1250 |
| 7654 | MARTIN | 30 | 1250 | 1250 |
| 7521 | WARD | 30 | 1250 | 1250 |
+-------+--------+--------+------+--------+