oracle sql,id,按一列分组,多列在另一列中不同

时间:2020-03-30 21:04:09

标签: sql oracle group-by count window-functions

我试图弄清楚如何编写查询来执行此操作。我在表ID1和ID2中有两个ID。下面是我想要的。

  1. ID2的计数为(ID2)> 1
  2. 不同ID1的数量> 1

我不确定如何使用Oracle SQL执行此操作。我确实编写了代码来进行分组。但是,我无法使其余代码正常工作,包括ID1大于1的部分。完成更多代码后,我将发布更多代码。

数据

ID1 ID2
1   33
1   33
5   44
6   44
7   8

ID1 ID2
5   44
6   44

尝试密码

select ID2, 
COUNT(*) 
from TABLE1 
GROUP BY ID2
HAVING COUNT(*)>1

1 个答案:

答案 0 :(得分:2)

如果需要整个行,则可以使用窗口功能。与其他几个数据库不同,Oracle支持COUNT(DISTINCT ...)作为窗口函数,因此很容易:

select id1, id2
from (select t.*, count(distinct id1) over(partition by id2) cnt from mytable t)
where cnt > 1

Demo on DB Fiddle

ID1 | ID2
--: | --:
  5 |  44
  6 |  44