【问题标题】:Getting difference of two counts in SQL在 SQL 中获取两个计数的差异
【发布时间】:2011-10-17 20:53:08
【问题描述】:

我正在 Netezza 中进行一些 QA,我需要比较两个单独的 SQL 语句的计数。这是我目前使用的 SQL

SELECT COUNT(*) AS RECORD_COUNT  
FROM db..EXT_ACXIOM_WUL_FILE  A
LEFT JOIN (select distinct CURRENTLY_OPTED_IN_FL,mid_key from db..F_EMAIL) B
ON A.MID_KEY=B.MID_KEY
MINUS
SELECT COUNT(*)
FROM db..EXT_ACXIOM_WUL_FILE  A

但是,MINUS 似乎不是这样工作的。当计数匹配时,这将为 Record_count 返回 null,而不是返回 0。我基本上将记录数计算为:

record_count=count1-count2

因此,如果计数相等,则为 0,否则为差异。正确的 SQL 是什么?

【问题讨论】:

    标签: sql netezza


    【解决方案1】:
    SELECT
    (
    SELECT COUNT(*) AS RECORD_COUNT  
    FROM db..EXT_ACXIOM_WUL_FILE  A
    LEFT JOIN (select distinct CURRENTLY_OPTED_IN_FL,mid_key from db..F_EMAIL) B
    ON A.MID_KEY=B.MID_KEY
    )  -
    (
    SELECT COUNT(*)
    FROM db..EXT_ACXIOM_WUL_FILE  A
    ) TotalCount
    

    Oracle 的MINUS(SQL Server 中的EXCEPT)是完全不同的动物 :)

    如果你理解UNION然后思考集合,你就会理解MINUS/EXCEPT

    【讨论】:

      【解决方案2】:

      MINUS 是设置差异,不适用于算术运算。

      你可以的

      SELECT COUNT(*) - (SELECT COUNT(*)
                         FROM   db..EXT_ACXIOM_WUL_FILE A) AS Val
      FROM   db..EXT_ACXIOM_WUL_FILE A
             LEFT JOIN (select distinct CURRENTLY_OPTED_IN_FL,
                                        mid_key
                        from   db..F_EMAIL) B
               ON A.MID_KEY = B.MID_KEY  
      

      或者其他选项

      SELECT COUNT(*) - COUNT(DISTINCT A.PrimaryKey) AS Val
      FROM   db..EXT_ACXIOM_WUL_FILE A
             LEFT JOIN (select distinct CURRENTLY_OPTED_IN_FL,
                                        mid_key
                        from   db..F_EMAIL) B
               ON A.MID_KEY = B.MID_KEY  
      

      【讨论】:

        【解决方案3】:

        我想这可能就是你要找的东西

            SELECT COUNT(distinct(CURRENTLY_OPTED_IN_FL + F_EMAIL.MID_KEY)) - count(distinct(EXT_ACXIOM_WUL_FILE.MID_KEY))
            FROM EXT_ACXIOM_WUL_FILE 
            LEFT OUTER JOIN F_EMAIL
              ON JOIN F_EMAIL.MID_KEY = EXT_ACXIOM_WUL_FILE.MID_KEY
        

        【讨论】:

          猜你喜欢
          • 2022-07-08
          • 1970-01-01
          • 2016-07-26
          • 2012-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多