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次的记录分组,同时正常返回所有其他记录.
非常感谢任何帮助 - 谢谢!
你可以这样做:
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)
| 归档时间: |
|
| 查看次数: |
2462 次 |
| 最近记录: |