我的 PostgreSQL 9.5 数据库中有一些示例数据,如下所示:
Group length
A 19.3
A 19.3
A 20.3
A 20.3
A 19.3
A 19.3
B 22.1
B 19.3
B
B 15.5
B 12.8
B 14.7
对于每个组,我想使用 PostgreSQL mode()
函数有条件地找到模式(最重复/最常见的值),这样:
- 如果长度为空,则替换为0.0
- 为每个/独特的组寻找模式
- 如果有两种模式,返回最大值
- 如果模式不存在则为该组返回 0.0
期望的输出可能是这样的:
Group length
A 19.3
B 0.0
我如何有条件地找到模式,有人可以帮助我吗?
最佳答案
我认为你的条件都归结为:
select group,
mode() within group (order by coalesce(length, 0.0) desc)
from t
group by group
如果你有一行 group
,那么 mode()
不能返回 NULL
,所以更远的 COALESCE()
不需要。
关于sql - 如何在 PostgreSQL 中有条件地查找模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44482665/