问题描述
我一直在寻找答案,但是我发现并尝试过的事情似乎不起作用,或者我做错了事。
作为示例,我们有2个表:
Table Messages:
Int: id
Date: create_timestamp
String: join_number
Table Map:
String: entity_name
String: join_number
我正在尝试计算create_timestamps并按Entity_name对其进行分组,因此查询为:
select count(create_timestamp) as count,entity_name from Messages left join Map on Messages.join_number = Map.join_number group by entity_name
查询工作正常,除了一个问题,如果未找到时间戳记,则不返回结果为0的实体。如果找不到任何内容,我需要它返回entity_name并返回0。
我尝试使用COALESCE进行如下查询:
select COALESCE(count(create_timestamp),0) as count,entity_name from Messages left join Map on Messages.join_number = Map.join_number group by entity_name
但是它仍然不返回0值。请记住,这是一个DB2数据库,在这里真的欢迎任何评论,问题或答案。
解决方法
事实证明,马克的回答是正确的。我在查询上犯了一个错误,因为我还包含了条件“ where timestamp> timestamp(xxxx)”,这导致查询不包括那些0结果。如果有人觉得它有帮助,则要选择时间戳的正确查询是:
选择count(timestamp)作为计数,从Map left join时间戳记> timestamp('2020-01-01')的消息中选择entity_name,并且Messages.join_number = Map.join_number按entity_name分组
再次非常感谢!