我有一个查询来获取我的字段数,但我想包含空值。我得到了10分。
select in_currency, count(*) from stackoverflow
where bd_business_day = '2018-02-09'
and scenario_set_name ('A','null')
group by in_currency
但是这个计数让我只得到A的总数,因为当我分别查询A和null时,我会得到不同的数。
当我这样做时,我总共获得10分:
select in_currency, count(*) from stackoverflow
where bd_business_day = '2018-02-09'
and scenario_set_name = 'A'
group by in_currency
当我这样做时得到5:
select in_currency, count(*) from stackoverflow
where bd_business_day = '2018-02-09'
and scenario_set_name is null
group by in_currency
我想将两者结合起来,因为当我删除方案集名称子句时,总数应为15。
答案 0 :(得分:2)
第一个查询中的逻辑是:
where bd_business_day = '2018-02-09' and scenario_set_name in ('A', 'null')
这是将scenario_set_name
与字符串值'null'
进行比较。此字符串值与实际值完全不同。
您可以尝试将其写为:
where bd_business_day = '2018-02-09' and scenario_set_name in ('A', NULL)
但这也不会得到NULL
值,因为几乎所有与NULL
的比较都会返回NULL
,在WHERE
条件中被视为“假”。
您需要在逻辑中包含这两个条件:
where bd_business_day = '2018-02-09' and
(scenario_set_name = 'A' or scenario_set_name is NULL)
答案 1 :(得分:1)
试试这个:
select in_currency, count(*) from stackoverflow
where bd_business_day = '2018-02-09'
and ( scenario_set_name = 'A' or scenario_set_name is null)
group by in_currency