DB2 SQL:如何计算' having子句返回的记录数量

时间:2016-01-08 13:46:00

标签: sql count db2 having totals

表XRDK / WHSHIPP_R3有4列--ZNWHSE,ZNSITE,ZNMANE,ZNRECD,共有1,071条记录。

我已经隔离了多次使用过的ZNMANE号码;

SELECT ZNMANE FROM XRDK/WHSHIPP_R3
GROUP BY ZNMANE                   
HAVING (COUNT(ZNMANE) >1)         
ORDER BY 1

我想要这些孤立记录的总数,但如果我将其更改为;

SELECT COUNT(ZNMANE) FROM XRDK/WHSHIPP_R3
GROUP BY ZNMANE                   
HAVING (COUNT(ZNMANE) >1)         
ORDER BY 1

我只需加载2s,这必须是每个ZNMANE记录的个别计数。

我试过了;

SELECT ZNMANE FROM XRDK/WHSHIPP_R3
GROUP BY ZNMANE                   
HAVING (COUNT(ZNMANE) >1)         
ORDER BY 1                        
UNION ALL
SELECT COUNT(ZNMANE) FROM XRDK/WHSHIPP_R3

但这在顶部返回了1071,所以我猜它只计算了整个文件。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

On方法是一个子查询:

var="configItemDtoSearch"

如果您想要每行中的值,请使用窗口函数:

SELECT COUNT(*)
FROM (SELECT ZNMANE
      FROM XRDK/WHSHIPP_R3
      GROUP BY ZNMANE                   
      HAVING COUNT(ZNMANE) > 1     
     ) z 

答案 1 :(得分:1)

组通常需要一个条件(您要分组的内容,在这种情况下为ZNMANE)和聚合(在这种情况下为COUNT)。

我认为您的第一个查询应该看起来更像

SELECT ZNMANE
     , COUNT(1) 
  FROM XRDK/WHSHIPP_R3 
 GROUP 
    BY ZNMANE 
HAVING (COUNT(1) > 1) 
 ORDER 
    BY 1

你可以尝试一下,看看你是否得到了你需要的东西..