[英]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.