COUNT场

问题描述:

如果我有这样一个表作为COUNT场

Name  Email 
Sam  [email protected] 
Fred  [email protected] 
Ben  Null 
Tom  Null 

,我想指望有多少人没有电子邮件

,所以我想

SELECT 
Name, 
Email, 
CASE WHEN Email IS NULL 
THEN COUNT(Email) ELSE 0 END AS [Count] 
FROM Table1 
Group by Name,Email 

但我得到的结果是

Name  Email  Count 
Sam  [email protected]  0 
Fred  [email protected]  0 
Ben  Null  0 
Tom  Null  0 

select count(name) from Table1 where email is null 

,或者如果你需要统计不同的名称数:

select count(distinct name) from Table1 where email is null 

用于计算有多少人没有电子邮件,你不需要group by条款 - 你只是想获得一个单个回答:

SELECT COUNT(*) 
FROM table1 
WHERE email IS NULL 

COUNT()会忽略NULL字段。你的问题中的措辞也表明你只需要所有没有电子邮件的人的总数,所以GROUP BY似乎不是必要的。

也许这是你在找什么:

Select Count(*) 
From  Table1 
Where Email Is Null; 

SELECT 
count(name) 
FROM Table1 
where email is null 
+2

我不认为这回答了这个问题。 – Spongman

如果你想要的是具有1或0时没有电子邮件字段,你靠近。

SELECT Name, Email, NoEmail = CASE WHEN Email IS NULL OR Email = '' THEN 1 ELSE 0 END 
FROM Table1; 

或者只是计算WHEN电子邮件的数量为NULL。

SELECT COUNT(*) 
FROM Table1 
WHERE Email IS NULL;