为Postgres中的每个组选择任意行



在Presto中,有一个arbitrary()聚合函数可以选择给定组中的任意行。如果没有group by子句,那么我可以使用distinct on。对于group by,每个选定的列都必须位于group by中或是聚合列。例如:

| id | foo |
| 1  | 123 |
| 1  | 321 |
select id, arbitrary(foo), count(*)
from mytable
group by id

Fiddle

返回1, 123, 2还是1, 321, 2并不重要。像min()max()这样的东西可以工作,但速度要慢得多。

Postgres中是否存在类似arbitrary()的内容?

select  m.foo,b.id,b.cnt from mytable m  
join (select id, count(*) cnt
from mytable
group by id) b  using (id)  limit 1;

如果没有明确提到ascdesc的所有订单都不保证。因此,在上面的查询中,foo的外观是任意的。

相关内容

  • 没有找到相关文章

最新更新