18回答

0收藏

若返回值为null,则PostgreSQL返回0

技术问答 技术问答 604 人阅读 | 18 人回复 | 2022-03-03

我有一个查询返回avg(price)+ r" ?% w& `$ K, k9 s! l( v
    select avg(price)  from(       select *,cume_dist() OVER (ORDER BY price desc) from web_price_scan      where listing_Type='AARM          and u_kbalikepartnumbers_id =   and (EXTRACT(Day FROM (Now()-dateEnded)))*24 ( select avg(price)* 0.505050                                                                                                                                                                                                                                   from(select *,cume_dist() OVER (ORDER BY price desc)                         from web_price_scan                         where listing_Type='AARM                             and u_kbalikepartnumbers_id =                      and (EXTRACT(Day FROM (Now()-dateEnded)))*24  5如果没有可用值,如何返回0?
& G0 d/ f+ N+ U/ H, Z                                                                : N) m3 ]4 K9 N4 }; m# H; p
    解决方案:                                                                " h2 |# p1 m' R& Z% U1 t
                                                                使用合并; w, T1 g. O3 {
COALESCE(value [,...])The COALESCE function returns the first of its arguments that is notnull.
" n5 [! \; _/ _0 V4 }/ O$ Q2 e8 d4 r                Null is returned only if all arguments are null. It is often
  k+ o- l& u4 x: r0 M                used to substitute a default value for null values when data is% _$ P0 _$ d- S. o8 G' o
                retrieved for display.( B( A% N2 F& p, q7 Z7 D
编辑
5 m8 X/ X/ Y5 x! X这是COALESCE查询示例:
3 I8 T- b: D2 p% d9 R+ J/ nSELECT AVG( price )FROM(       SELECT *,cume_dist() OVER ( ORDER BY price DESC ) FROM web_price_scan      WHERE listing_Type = 'AARM          AND u_kbalikepartnumbers_id =   AND ( EXTRACT( DAY FROM ( NOW() - dateEnded ) ) * 24  ( SELECT AVG( COALESCE( price,0 ) )* 0.505050                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  FROM ( SELECT *,cume_dist() OVER ( ORDER BY price DESC )                                                                                                                             FROM web_price_scan                                           WHERE listing_Type='AARM                                               AND u_kbalikepartnumbers_id =                                        AND ( EXTRACT( DAY FROM ( NOW() - dateEnded ) ) * 24  5IMHOCOALESCE不应与之一起使用,AVG因为它会修改值。NULL这意味着未知,没有别的。这不像在里面用。SUM。在这个例子中,如果我们替换它,AVG为SUM,结果不会扭曲。总和加0不会伤害任何人,但当未知值计算为0时,你不会得到真正的平均值。
& o! K8 i3 u, N8 @7 X/ m% r) K在那种情况下,我将添加price IS NOT NULLinWHERE避免这些未知值。
分享到:
回复

使用道具 举报

回答|共 18 个

周智琼

发表于 2022-3-3 23:24:17 | 显示全部楼层

回复

使用道具 举报

绿豆鲨

发表于 2022-3-5 13:45:57 | 显示全部楼层

LZ帖子不给力,勉强给回复下吧
回复

使用道具 举报

赵宏达

发表于 2022-3-6 14:59:22 | 显示全部楼层

啥玩应呀
回复

使用道具 举报

不帅你报警

发表于 2022-3-7 09:21:57 | 显示全部楼层

站位支持
回复

使用道具 举报

奶油小泡芙

发表于 2022-3-8 04:53:34 | 显示全部楼层

真心不错
回复

使用道具 举报

山野的雾

发表于 2022-3-8 16:08:05 | 显示全部楼层

报告!别开枪,我就是路过来看看的。。。
回复

使用道具 举报

李泽禛

发表于 2022-3-8 23:30:10 | 显示全部楼层

我也顶起出售广告位
回复

使用道具 举报

秦之风

发表于 2022-3-9 05:25:09 | 显示全部楼层

路过 帮顶 嘿嘿
回复

使用道具 举报

九唔搭八

发表于 2022-3-9 10:44:13 | 显示全部楼层

锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

29055 积分
9659 主题
热门推荐