nmc*_*mck 7 postgresql postgresql-9.4
此查询(最小可重现的示例):
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
Run Code Online (Sandbox Code Playgroud)
在PostgreSQL 9.4抛出
被零除
没有SUM它的工作原理.
这怎么可能?
我喜欢这个问题,并向这些硬汉寻求帮助:
策划者有罪:
CASE 无法阻止计算其中包含的聚合表达式,因为聚合表达式是在考虑 SELECT 列表或 HAVING 子句中的其他表达式之前计算的
更多详细信息请参见https://www.postgresql.org/docs/10/static/sql-expressions.html#SYNTAX-EXPRESS-EVAL
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |