加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL – 使用SUM意外除零

发布时间:2020-12-13 16:14:08 所属栏目:百科 来源:网络整理
导读:此查询(最小可重现的示例): WITH t as ( SELECT 3 id,2 price,0 amount)SELECT CASE WHEN amount 0 THEN SUM(price / amount) ELSE price END u_priceFROM tGROUP BY id,price,amount 在PostgreSQL 9.4抛出 division by zero 没有SUM就可以了. 这怎么可能?
此查询(最小可重现的示例):
WITH t as (
    SELECT 3 id,2 price,0 amount
)
SELECT 
    CASE WHEN amount > 0 THEN
        SUM(price / amount)
    ELSE
        price
    END u_price
FROM t
GROUP BY id,price,amount

在PostgreSQL 9.4抛出

division by zero

没有SUM就可以了.

这怎么可能?

我喜欢这个问题,我求助于这些 tough guys:

策划者有罪:

A CASE cannot prevent evaluation of an aggregate expression contained
within it,because aggregate expressions are computed before other
expressions in a SELECT list or HAVING clause are considered

更多细节见https://www.postgresql.org/docs/10/static/sql-expressions.html#SYNTAX-EXPRESS-EVAL

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读