分组依据并选择未包含在聚合中的列

时间:2015-10-23 15:05:26

标签: sql aggregates

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

我想在A,B,C上分组,有计数(*)> 1然后对于这些行中的每一行,我想要选择未包含在聚合中的其余列。

结果就像

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你不想要GROUP BY,你想要ORDER BY。要获取第一列,您可以使用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;