Vertica,包含null

时间:2018-03-08 19:11:20

标签: sql vertica

我有一个查询来获取我的字段数,但我想包含空值。我得到了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。

2 个答案:

答案 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