etm*_*124 1 sql sql-server sql-server-2005
是否有更高效或更好的实践来获得数量而不是我在下面做的事情?
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
Run Code Online (Sandbox Code Playgroud)
SUM(CASE WHEN i.email is NULL THEN 1 ELSE 0 END) as 'No Email'
Run Code Online (Sandbox Code Playgroud)
可以替换为因为... 引用自MSDN计数(Transact SQL)
COUNT(ALL表达式)计算组中每行的表达式,并返回非空值的数量.
当表达式放在COUNT语句的括号中时,它将仅计算并计算该字段中的非空值.因此,如果您使用Count(*) - Count(字段),您将获得所有空字段的总和.
COUNT(*) - COUNT(i.email) AS 'No Email'
Run Code Online (Sandbox Code Playgroud)
您的查询将如下所示:
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
Run Code Online (Sandbox Code Playgroud)