为什么COUNT在此查询中返回NULL而不是“ 0”?

时间:2019-08-14 16:08:26

标签: sqlite count aggregate-functions

我有查询

select d.did, count ( h.did ), unique_interested
from dealer as d
  left outer join house as h
    on h.did = d.did
  left outer join (
    -- cid = customer id
    select hid, count (cid) as unique_interested
    from is_interested
    group by hid
  ) as ok
    on h.hid = ok.hid
group by d.did
order by d.did asc
;

应该选择每个经销商正在处理的房屋数量,以及对所述房屋感兴趣的唯一客户的数量(如每个经销商的客户数量)。即使经销商现在没有房子可以交易,这也应该发生,这就是为什么我在构建要从中选择列的表时使用left outer join的原因。

现在,对我的数据库运行此查询将产生以下输出:

d.did  count ( h.did)  unique_interested
-----  --------------  ----------------
1           3                                
2           3              1                 
3           0                          

正如您所看到的,当在最后一列生成的一个单元中有0时,count不会在最后一列中打印null,而是返回null。加入(如cid is null

select hid, count ( cid ) as unique_interested
from is_interested
group by hid

我知道这是因为from产生的表中有公寓,没有人感兴趣。但是不应该将产生0而不是实际的列值{{1 }}在每种情况下?

任何关于为什么会发生这种情况的解释都将受到赞赏,因为它将引导我回答另一个问题,即“为什么我不能从is_interested表中获得每个经销商的正确唯一感兴趣的客户数量?” ,与数据库的当前状态一样,输出应类似于:

null

0 个答案:

没有答案