分组依据和 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;
鉴于我有列 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;