我有以下查询:
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)