使用案例陈述查询中位数



如何从值大于 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)

最新更新