median(expr)
功能描述
MEDIAN
MEDIAN
函数用于计算数值列的中位数。中位数是将数据集按大小顺序排列后位于中间位置的值。该函数等价于
percentile(expr, 0.5)
percentile(expr, 0.5)
,即计算第 50 百分位数。
参数说明
expr
expr
:数值类型的表达式,可以是整数、浮点数或 DECIMAL
DECIMAL
类型。
返回类型
- 返回
DOUBLE
DOUBLE
类型。
- 返回数据集的中位数。
注意事项
- 如果输入为空集,返回
NULL
NULL
。
- 对于偶数个值,返回中间两个值的平均值。
- 对于奇数个值,返回正中间的值。
NULL
NULL
值会被自动忽略,不参与计算。
MEDIAN
MEDIAN
不支持 FILTER
FILTER
子句,如需条件过滤,请在外层使用 WHERE
WHERE
子句或改用 percentile(expr, 0.5) FILTER (...)
percentile(expr, 0.5) FILTER (...)
。
使用示例
- 基本用法:计算中位数
SELECT median(col) FROM VALUES (0), (10) AS tab(col);
+--------------+
| median(col) |
+--------------+
| 5 |
+--------------+
- 偶数个值的中位数(两个中间值的平均值)
SELECT median(value) FROM VALUES (1), (2), (3), (4) AS t(value);
+----------------+
| median(value) |
+----------------+
| 2.5 |
+----------------+
- 奇数个值的中位数
SELECT median(value) FROM VALUES (1), (2), (3), (4), (5) AS t(value);
+----------------+
| median(value) |
+----------------+
| 3 |
+----------------+
- 按分组计算中位数
SELECT c, median(col)
FROM VALUES ('a', 1), ('a', 2), ('a', 3), ('b', 10), ('b', 20), ('b', 30) AS tab(c, col)
GROUP BY c;
+---+-------------+
| c | median(col) |
+---+-------------+
| a | 2 |
| b | 20 |
+---+-------------+