gpt4 book ai didi

sql - 列下归零

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

如果表中没有可用于构建器的数据,我希望在流量列中有一个“零”。我以为 coalesce 会让我到达那里,但我失败了。任何建议。

select "Builder", coalesce("Traffic", 0) 
from table
where "Week" = '05/15/2005'

查询时的结果:

select "Builder" "Traffic"
from table
where "Week" = '05/15/2005'

Builder Traffic
Mike 10
Tom 15
Me 5

期望的结果:

Builder         Traffic
Jake 0
Mike 10
Tom 15
Me 5

最佳答案

COALESCE 适用于 NULL 值,但如果根本没有返回,则永远不会调用 COALESCE

你的“ jack ”必须来自某处。假设您有一个名为 builder_names 的包含所有可能构建器的表,您可以使用 LEFT [OUTER] JOIN 使其工作:

select b."Builder", coalesce(t."Traffic", 0) AS "Traffic"
from builder_names b
left join tbl t ON t.builder = b.builder -- or some id?
AND t."Week" = '05/15/2005';

你评论了:

Jake is there in the table but since he has no corresponding data for the week he is excluded.

那么这会有所帮助:

select "Builder"
, max(CASE WHEN "Week" = '05/15/2005' THEN "Traffic" ELSE 0 END) AS "Traffic"
from tbl
group by "Builder";

假设:

  • 您希望每个名称​​一行
  • “Traffic”是数值数据类型,其值 > 0。

如果每个构建器可以有多行,并且您希望返回它们,则需要采用不同的方法。你的问题在细节上有点简单。

无论哪种方式,第一种解决方案更可取。对于大表,干净、规范化的模式要快得多。

旁白:我不会使用大小写混合的标识符,我更喜欢使用标准 ISO 8601 格式的日期文字 ('2015-12-15'),这在任何语言环境中都是明确的设置。

关于sql - 列下归零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174607/

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