gpt4 book ai didi

postgresql - Postgres 错误 : Division by zero on bulk update SQL

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

我收到此错误:错误:除以零。 SQL 状态:22012

下面是我的查询-

UPDATE USR
SET PRCNT_SATSFCTN = (SELECT (SELECT COUNT(*)
FROM ORDR
WHERE USR.USR_ID = ORDR.USR_ID AND
STSFD_SW = 'Y') * 100 / COUNT(*)
FROM ORDR
WHERE USR.USR_ID = ORDR.USR_ID)

最佳答案

你可以试试:

UPDATE usr
SET prcnt_satsfctn = o.share
FROM (
SELECT usr_id
,(count(CASE WHEN stsfd_sw = 'Y' THEN 1 ELSE NULL END) * 100)
/ count(*) AS share -- cannot be NULL!
FROM ordr
GROUP BY 1
) o
WHERE usr.usr_id = o.usr_id

这个查询应该在几个方面有所改进:

  • 更新 usr 中的任何行,其中 ordr 中没有匹配的行。这就是除以 0 的地方。 (@Jan 的查询将更新为 NULL。)

  • 这里不能被 0 除。

  • 更快,因为它只需要扫描表 ordr 一次。

  • 更短、更简洁。

关于postgresql - Postgres 错误 : Division by zero on bulk update SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8776634/

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