2012-01-05 48 views
1

獲得計數的效率還是比我在下面做的更好?在一個查詢中獲取不同子句的計數

select 
    i.org_id, 
    o.Org_Name_1, 
    count(*) as 'Total Users', 
    SUM(CASE WHEN i.email is NULL THEN 1 ELSE 0 END) as 'No Email' 
from 
    individu i, 
    organiz o 
where 
    i.org_id = o.org_id 
group by 
    i.org_id, o.Org_Name_1 
order by 
    count(*) desc 

回答

6
SUM(CASE WHEN i.email is NULL THEN 1 ELSE 0 END) as 'No Email' 

可以與因更換...從MSDN Count(Transact SQL)

COUNT(ALL表達)引評估表達的一組中的每一行,並返回非空值的數量。

當一個表達式放在COUNT語句的括號中時,它將只評估和計算該字段中的非空值。因此,如果您使用Count(*) - Count(field),您將獲得所有空字段的總數。

COUNT(*) - COUNT(i.email) AS 'No Email' 

您的查詢會再看看這樣的:

SELECT 
    i.org_id, 
    o.Org_Name_1, 
    COUNT(*) AS 'Total Users', 
    COUNT(*) - COUNT(i.email) AS 'No Email' 
FROM 
    individu i, 
    organiz o 
WHERE 
    i.org_id = o.org_id 
GROUP BY 
    i.org_id, o.Org_Name_1 
ORDER BY 
    COUNT(*) DESC 
+0

+1我在想同樣的事情。 – 2012-01-05 19:19:35

相關問題