【问题标题】:Oracle query: how do I limit the returned records to only those having a count > 1 but show full results?Oracle 查询:如何将返回的记录限制为计数 > 1 但显示完整结果的记录?
【发布时间】:2019-10-25 00:26:00
【问题描述】:

我需要显示拥有多个 ID 的所有用户,但不返回拥有多个 ID 的用户。我尝试使用 group ,但我需要列出 ID 而不仅仅是计算它们,所以无法让它为我工作。我最终使用了下面的代码,但它返回了所有记录。

选择 id,fname,lname,ssn,dob 按 fname、lname、ssn、dob 划分的 count(id) 为 cnt 从表 按cnt desc排序;

【问题讨论】:

    标签: sql oracle oracle10g toad


    【解决方案1】:

    使用子查询:

    select id, fname, lname, ssn, dob
    from (select id, fname, lname, ssn, dob,
                 count(id) over (partition by fname, lname, ssn, dob) as cnt
          from TABLE
         ) t
    where cnt >= 2
    order by cnt;
    

    【讨论】:

      【解决方案2】:
      WITH CTE (FNAME, LNAME, TALLY) AS
      (
        SELECT FNAME, LNAME, COUNT(ID) AS TALLY
        FROM TABLE
        HAVING COUNT(ID) > 1
      )
      SELECT T.ID, C.FNAME,C.LNAME FROM CTE C
      JOIN TABLE T
      ON C.FNAME = T.FNAME
      AND C.LNAME = T.LNAME
      

      【讨论】:

        猜你喜欢
        • 2011-05-28
        • 1970-01-01
        • 2011-01-31
        • 2013-08-29
        • 1970-01-01
        • 2012-01-18
        • 2019-12-03
        • 1970-01-01
        相关资源
        最近更新 更多