我有一张如下表格。
Id amount
--------------
10. 12345
10. 12345
12. 34567
13. 34567
根据我的业务要求,相同金额的同一ID不是重复记录。具有相同数量的不同ID是重复记录。希望你理解这个要求。
在上面的示例记录中,我必须获得重复的金额值及其计数,同时Id应该是不同的。
预期的查询结果为34567,计为2。
答案 0 :(得分:2)
如果您还需要显示ID,
SELECT a.*
FROM
(
SELECT id, amount, count(1) OVER (PARTITION BY amount) num_dup
FROM table1
)a
WHERE a.num_dup >1
<强>更新即可。如果您只关心不同的ID,请使用COUNT(DISTINCT id)
代替COUNT(1)
更多示例。
加入另一张表
SELECT a.*
FROM
(
SELECT a.id, a.amount,
count(distinct a.id) OVER (PARTITION BY a.amount) num_dup
FROM table1 a
INNER JOIN table2 b ON (b.id = a.id)
)a
WHERE a.num_dup >1
没有窗口功能且没有table1.id:
SELECT a.amount, count(distinct a.id)
FROM table1 a
INNER JOIN table2 b ON (b.id = a.id)
GROUP BY a.amount
HAVING count(distinct a.id) >1 ;
没有窗口功能和table1.id:
SELECT b.*
FROM
(
SELECT a.amount, count(distinct a.id)
FROM table1 a
INNER JOIN table2 b ON (b.id = a.id)
GROUP BY a.amount
HAVING count(distinct a.id) >1
)a
INNER JOIN table1 b ON (b.amount = a.amount)