gpt4 book ai didi

sql - 如果使用 where 子句时数据为空,则将数据计为零

转载 作者:行者123 更新时间:2023-11-29 11:23:29 30 4
gpt4 key购买 nike

现在我有这个查询:

SELECT 
opp.name as name,
count(log.stage_id) as stage_count
FROM
crm_lead as opp LEFT OUTER JOIN crm_lead_stage_log as log ON (opp.id = log.opportunity_id)
GROUP BY
name

它输出这个结果:

name  | stage_count |
name1 | 2
name2 | 1
name3 | 0

它输出我需要的。但是如果我给它加上任何条件,它就会跳过计数为零的行,我需要能够看到这些行。例如,如果我写这个查询:

SELECT 
opp.name as name,
count(log.stage_id) as stage_count
FROM
crm_lead as opp LEFT OUTER JOIN crm_lead_stage_log as log ON (opp.id = log.opportunity_id)
WHERE WHEN log.create_date > '2014-01-28 08:49:03'
GROUP BY
name

然后它输出这个:

name  | stage_count |
name1 | 1

它会正确计算该时间间隔内的现有阶段数,但会跳过该时间间隔内不存在的阶段数的行。我怎样才能让它像这样输出(在那个例子中,只有第一行的一个阶段被计算在新查询的那个时间间隔内,对于其他行,它计数为零,因为它不存在):

name  | stage_count |
name1 | 1
name2 | 0
name3 | 0

这样可以吗?附言如果需要更多信息,例如将此查询示例放在网上查看,只需发表评论,我会更新我的答案)。

最佳答案

如果要在结果为空时返回零​​,可以使用命令 COALESCE。

SELECT 
opp.name AS name,
COALESCE(COUNT(log.stage_id),0) AS stage_count
FROM
crm_lead AS opp LEFT OUTER JOIN crm_lead_stage_log AS log ON (opp.id = log.opportunity_id)
GROUP BY name

当计数为空值时返回“0”。

关于sql - 如果使用 where 子句时数据为空,则将数据计为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21405207/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com