请求协助编写SQL查询:统计各name值对应的location列NULL值次数
解决统计每个name对应location NULL值次数的SQL查询
没问题,这个需求很常见,我直接给你两种实用的写法,你可以根据习惯选一种:
第一种用COUNT结合CASE语句,这是比较直观的写法:
SELECT name, COUNT(CASE WHEN location IS NULL THEN 1 END) AS null_location_count FROM your_table_name -- 记得替换成你实际的表名 GROUP BY name;
思路解释:
GROUP BY name会把表中的数据按name分组,确保每个name只出现一行结果CASE WHEN location IS NULL THEN 1 END会在location为NULL时返回1,否则返回NULLCOUNT()函数会自动忽略NULL值,所以这里统计的就是每个name对应的location NULL值的次数
第二种用SUM结合CASE语句,逻辑和上面一致,只是用求和来实现:
SELECT name, SUM(CASE WHEN location IS NULL THEN 1 ELSE 0 END) AS null_location_count FROM your_table_name GROUP BY name;
额外说明:
这两种写法都会包含所有存在的name,哪怕某个name对应的location没有NULL值,结果里的null_location_count会显示0,完全符合你的统计需求。
内容的提问来源于stack exchange,提问作者CST1126
相关产品推荐
相关产品推荐

