使用group by计算总行数

Vac*_*ano 6 t-sql sql-server

我有以下查询:

select  count(ords.TRACKING_NUM)
from    Orders ords (NoLock)   
group by ords.TRACKING_NUM
having count(distinct ords.ORDER_NUM) = 4
Run Code Online (Sandbox Code Playgroud)

我希望它检索TRACKING_NUM的总量,它们上面有4个ORDER_NUM(应该是3,352).相反,我获得3,352行等于4(或更多因为不同).

我知道为什么会这样.它计算每个组内的值.我可以轻松地将查询更改为:

select  ords.TRACKING_NUM
from    Orders ords (NoLock)   
group by ords.TRACKING_NUM
having count(distinct ords.ORDER_NUM) = 4
Run Code Online (Sandbox Code Playgroud)

然后它返回3,352行TRACKING_NUMs给我.但是,这在我的数据库上并不是非常高效(大约需要41秒).我真正需要的是一个查询,它将给我一个计数,只有一个计数(并希望通过这样做更快).

谢谢你的任何建议.

Rem*_*anu 15

SELECT COUNT(*)
FROM (
   SELECT TRACKING_NUM
   FROM Orders
   GROUP BY TRACKING_NUM
   HAVING count(distinct ORDER_NUM) = 4) AS Agg
Run Code Online (Sandbox Code Playgroud)