PostgreSQL中的条件组(组类似项)

har*_*don 2 sql database 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.)
Run Code Online (Sandbox Code Playgroud)

在有超过6个具有相同名称(s.name)的记录的情况下,我想将这些项组合在一起作为一行(我不关心将哪些其他数据分组到该行,即第一条记录那个小组会很好).

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

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

Flo*_*ita 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)
Run Code Online (Sandbox Code Playgroud)