如何提取coldest_temp字段含NULL值的季节分组记录
提取含NULL值季节的所有记录的SQL方案
给定表格数据:
season | month | coldest_temp ----------------------------- winter | Dec | -5 winter | Jan | -8 winter | Feb | NULL spring | Mar | 7 spring | Apr | 10 spring | May | 15
要提取coldest_temp字段存在NULL值的季节对应的所有记录,这里提供两种可行的SQL写法:
方法一:GROUP BY + HAVING 子查询关联
先筛选出存在NULL值的季节,再关联原表获取该季节的所有记录:
SELECT t.* FROM your_table t JOIN ( SELECT season FROM your_table GROUP BY season -- 利用COUNT(字段)忽略NULL的特性,判断是否存在NULL HAVING COUNT(coldest_temp) <> COUNT(*) ) s ON t.season = s.season;
也可以用更直观的条件替换HAVING子句:
HAVING MAX(CASE WHEN coldest_temp IS NULL THEN 1 ELSE 0 END) = 1
方法二:EXISTS 子查询判断
直接检查当前记录所属季节是否存在NULL值的记录:
SELECT * FROM your_table t WHERE EXISTS ( SELECT 1 FROM your_table WHERE season = t.season AND coldest_temp IS NULL );
两种方法都能得到目标结果,你可以根据自己的SQL环境选择更顺手的写法。
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

