如何从表median
中获取值{20}的val
列的test
。
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数据库。 任何帮助将不胜感激。
答案 0 :(得分:0)
从PostgreSQL 9.4开始,您使用ordered aggregates:
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)