【问题标题】:Count distinct duplicates计算不同的重复项
【发布时间】:2016-12-19 06:13:41
【问题描述】:

我有以下疑问:

WITH CTE AS(
   SELECT N, A, B,
   COUNT(*) OVER(PARTITION BY A, B) as cnt
   FROM Table
)
SELECT * FROM CTE WHERE cnt > 1

从表中返回所有重复计数。输出如下所示:

Table A (result of SQL)
N | A | B | cnt
----------------
1 | a | b | 2
1 | a | b | 2
1 | a | c | 1
1 | d | e | 2
2 | d | e | 2

我现在想根据 N 选择重复值(A & B 相同,多个不同的 N),所以:

Table B 
N | A | B | cnt
----------------
1 | d | e | 2
2 | d | e | 2

我是否应该在表 A 上再次应用上面的 SQL 代码来获取表 B?或者有没有更简单的解决方案?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    我建议:

    WITH CTE AS (
          SELECT N, A, B,
                 MIN(n) OVER (PARTITION BY A, B) as min_n,
                 MAX(n) OVER (PARTITION BY A, B) as max_n
          FROM Table
         )
    SELECT *
    FROM CTE
    WHERE min_n <> max_n;
    

    【讨论】:

      猜你喜欢
      • 2015-01-12
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 2023-03-06
      相关资源
      最近更新 更多