带条件的COUNT字段

时间:2017-10-11 15:29:09

标签: sql sql-server select count

如果我有一个表格,如

 Name       Email
 Sam      s@hot.com
 Fred     f@hot.com
 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      s@hot.com     0
 Fred     f@hot.com     0
 Ben        Null        0
 Tom        Null        0

5 个答案:

答案 0 :(得分:1)

select count(name) from Table1 where email is null

或者如果您需要计算不同名称的数量:

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

答案 1 :(得分:1)

为了计算有多少人没有收到电子邮件,您不需要group by条款 - 您只是想获得一个答案:

SELECT COUNT(*)
FROM   table1
WHERE  email IS NULL

答案 2 :(得分:1)

COUNT()会忽略NULL个字段。您的问题中的措辞也表明您只想要没有电子邮件的所有人的总数,因此GROUP BY似乎没有必要。

也许这就是你要找的东西:

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

答案 3 :(得分:1)

如果您想要的是没有电子邮件时具有1或0的字段,则表示您已关闭。

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

或者只计算WHEN Email IS NULL的数量。

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

答案 4 :(得分:0)

 SELECT 
 count(name)
 FROM Table1
where email is null