繁体   English   中英

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

[英]DB2 SQL: How to 'count' the amount of records returned by a having clause

表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,所以我猜它只计算整个文件。 有任何想法吗?

方法是子查询:

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

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

      SELECT ZNMANE, COUNT(*) OVER () as NumTotal
      FROM XRDK/WHSHIPP_R3
      GROUP BY ZNMANE                   
      HAVING COUNT(ZNMANE) > 1     

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM