分组依据和 select 列未包含在聚合中

Group by and select columns not included in the aggregate

鉴于我有列 A B C D ….. Z

我想对 A、B、C 的 Count(*) > 1 进行分组,然后对于这些行中的每一行,我还想 SELECT 其余的列包含在合计中。

结果会像

Occurrences    A   B   C    D   E   F    G  ------- Z
3              e   e   k    q   r   y    e  ------- j
3              e   e   k    f   t   d    t  ------- y
3              e   e   k    w   e   q    c  ------- d
2              f   r   s    w   e   q    c  ------- d
2              f   r   s    w   e   q    c  ------- d

我该怎么做?

你不想要 GROUP BY,你想要 ORDER BY。要获取第一列,您可以使用 window 函数,这些函数是 ANSI 标准并被大多数数据库支持:

select t.*
from (select count(*) over (partition by a, b, c) as occurrences,
             t.*
      from t
      order by a, b, c
     ) t
where occurrences > 1;