确定列B中的空值出现在A列,SQL表

时间:2018-04-03 13:55:06

标签: sql sql-server

我有一个带有"名称"的SQL表。作为一列,日期作为另一列,位置作为第三列。 location列支持空值。

我正在尝试编写一个查询,以确定name列中每个不同值的位置列中出现空值的次数。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

一种方法使用条件聚合:

select name, sum(case when location is null then 1 else 0 end)
from t
group by name;

另一种涉及稍微减少输入的方法是:

select name, count(*) - count(location)
from t
group by name;

答案 1 :(得分:0)

将count与过滤器一起使用,因为您只需要Null occurrence

select name, count(*) occurances
from mytable 
where location is null
group by name

答案 2 :(得分:0)

根据您的问题,您希望获得所有不同名称的明确列表。行,然后你想要计算每个名称有多少个NULL。

以下将实现此目的:

SELECT name, count(*) as null_counts
FROM table 
WHERE location IS NULL
GROUP BY name

WHERE子句仅检索记录中其位置为NULL的记录。

GROUP BY将根据NAME转动数据。

SELECT将为您提供名称,以及每个名称的记录数量的COUNT(*)。