#MEDIAN

median
MEDIAN ( ALL expr ) OVER ( query_partition_clause )

MEDIAN函数计算给定参数expr的中位数,仅支持expr类型为数值型或者日期时间型,使用其他数据类型会返回错误。

该函数不支持向量化计算。

MEDIAN窗口函数不能与DISTINCT以及ORDER BY语句一起使用。

函数返回值类型:

数据类型 返回值类型
TINYINT NUMBER
SMALLINT NUMBER
INT NUMBER
BIGINT NUMBER
FLOAT FLOAT
DOUBLE DOUBLE
NUMBER NUMBER
DATE DATE
TIMESTAMP TIMESTAMP
TIME TIME
INTERVAL INTERVAL

单行计算中,当expr的值为空时函数返回NULL;expr为字面NULL时报错。expr使用绑定参数,绑定字面NULL,返回结果NULL。

多行计算中,函数将忽略expr值为空的行。当所有行均为空时,计算结果为NULL。

ALL

表示对所有行计算中位数。

query_partition_clause

窗口函数通用语法。

expr只支持INT、NUMBER与时间类型。partition by的参数支持除LOB、JSON、XMLTYPE、UDT外的其它数据类型。

示例(HEAP表)

-- 创建表exam并插入数据
CREATE TABLE exam(id INT,score INT);
INSERT INTO exam VALUES(1,99);
INSERT INTO exam VALUES(2,80);
INSERT INTO exam VALUES(3,80);

SELECT id, score FROM exam;
          ID        SCORE
------------ ------------
           1           99
           2           80
           3           80

SELECT MEDIAN(score) res FROM exam;
         RES
------------
         80

SELECT MEDIAN(score) OVER () res FROM exam;
                RES
-------------------
                 80
                 80
                 80

SELECT MEDIAN(score) OVER (PARTITION BY id) res FROM exam;
                 RES
--------------------
                  99
                  80
                  80

SELECT MEDIAN(null) OVER() FROM sys.dual;
[1:15]YAS-04322 invalid datatype
pdf-btn 下载文档
copy-btn 复制链接