PostgreSQL中的条件分组(分组类似项目)。[英] Conditional group by (group similar items) in PostgreSQL

本文是小编为大家收集整理的关于PostgreSQL中的条件分组(分组类似项目)。的处理方法,想解了PostgreSQL中的条件分组(分组类似项目)。的问题怎么解决?PostgreSQL中的条件分组(分组类似项目)。问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有以下查询:

SELECT s.id,
       s.name,
       s.prom,
       s.some_other_field,
       ... many more fields also
FROM mytable s
INNER JOIN (on some other tables etc.)

如果有6个以上的记录具有相同的 name (s.name),我想将这些项目组合在一起(我不在乎其他数据是分组到该行,即该组的第一个记录是可以的).

这在Postgres中可以吗?我想这是一个有条件的组,从某种意义上说,我想将同名出现超过6次的记录进行分组,同时返回所有其他记录.

任何帮助都非常感谢 - 谢谢!

推荐答案

您可以做到这一点:

select * from (

    SELECT s.id,
           s.name,
           s.prom,
           s.some_other_field,
           ... many more fields also,
           row_number() over (partition by s.name order by s.id) as rnk,
           count(*) over (partition by s.name) cnt
    FROM mytable s
    INNER JOIN (on some other tables etc.)

) a
where cnt < 6 or (cnt >=6 and rnk = 1)

本文地址:https://www.itbaoku.cn/post/1763930.html