【问题标题】:oracle sql, id's, group by one column, mulitple distinct in other columnoracle sql,ids,按一列分组,在另一列中有多个不同
【发布时间】:2020-03-30 21:04:09
【问题描述】:

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

想要

  1. ID2 有 count(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

【问题讨论】:

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


    【解决方案1】:

    如果你想要整行,你可以使用窗口函数。与其他几个数据库不同,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

    【讨论】:

    • @jarlh:是的 - 所以这也更有趣:)
    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2018-08-12
    • 2015-11-21
    • 2015-03-27
    • 1970-01-01
    相关资源
    最近更新 更多