如何从值大于 20 的表 test
中获取val
列的median
。
id val
1 5.43
2 106.26
3 14.00
4 39.58
5 27.00
在这种情况下,输出将是中位数(27.00, 39.58, 106.26) = 39.58。
我正在使用PostgreSQL数据库。任何帮助将不胜感激。
从PostgreSQL 9.4开始,你使用有序聚合:
postgres=# SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY val)
FROM foo WHERE val > 20;
┌─────────────────┐
│ percentile_cont │
╞═════════════════╡
│ 39.58 │
└─────────────────┘
(1 row)
或者一些非常现代的语法:
postgres=# SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY val)
FILTER (WHERE val > 20)
FROM foo;
┌─────────────────┐
│ percentile_cont │
╞═════════════════╡
│ 39.58 │
└─────────────────┘
(1 row)