Postgresql获取数组中最常见的值

Sha*_*yHa 2 sql postgresql aggregate-functions

我有一个包含数组值列的表(在 group by 和 array_agg 函数之后)

COLUMN_VALUE          | other_columns...
-----------:          | -------:
 {0.45,0.45,0.97,0.99}|        ..
 {0.45,0.45,0.85,0.99}|        ..
 {0.45,0.45,0.77,0.99}|        ..
 {0.45,0.45,0.10,0.99}|        ..
Run Code Online (Sandbox Code Playgroud)

如何获得最频繁的值?(本例中每行 0.45)

我的猜测再次是 unnest 和 groupby,但我正在尝试找到更强大、更快的东西。

我用来构建表的查询

COLUMN_VALUE          | other_columns...
-----------:          | -------:
 {0.45,0.45,0.97,0.99}|        ..
 {0.45,0.45,0.85,0.99}|        ..
 {0.45,0.45,0.77,0.99}|        ..
 {0.45,0.45,0.10,0.99}|        ..
Run Code Online (Sandbox Code Playgroud)

小智 7

您可以使用聚合在聚合过程中获取最频繁的值mode()

select column1, column2, column3, 
       array_agg(column4) as prices
       mode() within group (order by column4 desc) as most_frequent_price
from tb
where ...
group by 1, 2, 3
Run Code Online (Sandbox Code Playgroud)

网上例子