繁体   English   中英

组中所有分组的SQL

[英]SQL for set of all in group by

假设我有表foo

A     B     C
==============
1     1     1
1     2     3
1     2     4
1     3     6
2     2     6

我想要所有具有重复AB的C集。 就像是:

select all(C) from foo group by a, b having count(b) > 1

我希望结果是

all(C)
===
 3
 4

在Oracle SQL中有没有简单的方法可以做到这一点?

SELECT t1.c
  FROM foo t1
       JOIN foo t2 ON (t1.a = t2.a AND 
                       t1.b = t2.b AND 
                       t1.rowid != t2.rowid)

应该给你你想要的。 使用解析函数可能会更有效率

SELECT c
  FROM (SELECT f.*,
               count(*) over (partition by a, b) cnt
          FROM foo f)
 WHERE cnt > 1

尝试这个:

SELECT C
FROM
(select C, COUNT(*) OVER(PARTITION BY A, B) AS DUPLICATES
from MY_TABLE) AS RESULTS
WHERE DUPLICATES > 1

我想到了。 我用了

select f.c from foo f
join (select a, b from foo group by a, b having count(c) > 1) dupes
on dupes.a = f.a and dupes.b = f.b;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM