APPROXIMATE_MEDIAN [聚合]
计算一组行中表达式的近似中间值。该函数返回一个 FLOAT 值。
APPROXIMATE_MEDIAN
是 APPROXIMATE_PERCENTILE [聚合] 的别名,参数为 0.5。
注意
注意: 此函数最适合较大数据组。如果您有一组较小数据,请使用确切的 MEDIAN [analytic] 函数。行为类型
不可变语法
APPROXIMATE_MEDIAN ( expression )
参数
- 表达式
- 任意 FLOAT 或 INTEGER 数据类型。函数返回近似中值或排序后成为近似中值的内插值。计算中忽略空值。
示例
提示
为了在查询中使用GROUP BY
时获得最佳性能,请验证您的表是否按 GROUP BY
列排序。
以下示例使用此表:
CREATE TABLE allsales(state VARCHAR(20), name VARCHAR(20), sales INT) ORDER BY state;
INSERT INTO allsales VALUES('MA', 'A', 60);
INSERT INTO allsales VALUES('NY', 'B', 20);
INSERT INTO allsales VALUES('NY', 'C', 15);
INSERT INTO allsales VALUES('MA', 'D', 20);
INSERT INTO allsales VALUES('MA', 'E', 50);
INSERT INTO allsales VALUES('NY', 'F', 40);
INSERT INTO allsales VALUES('MA', 'G', 10);
COMMIT;
计算此表中所有销售额的近似中间值:
=> SELECT APPROXIMATE_MEDIAN (sales) FROM allsales;
APROXIMATE_MEDIAN
--------------------
20
(1 row)
您可以修改此查询,按州对销售进行分组,然后获取每组的近似中间值:
=> SELECT state, APPROXIMATE_MEDIAN(sales) FROM allsales GROUP BY state;
state | APPROXIMATE_MEDIAN
-------+--------------------
MA | 35
NY | 20
(2 rows)