请我试图找出每行中两个值总和 imls2016.visits 和 imls2010.visits 总和之间的百分比差异。在我在联合声明中添加第三个表(该表是 imls_regions)之前,这之前工作正常。但是每当我运行新代码时,它都会引发数字溢出错误。我已经调整了精度和比例,但我无法纠正这个错误。请问我应该在我的代码中改变什么:(PostgreSQL 12)
- 错误消息:>“错误:数字字段溢出详细信息:精度为 10、比例为 1 的字段必须舍入为小于 10^9 的绝对值。SQL 状态:22003”
我的代码:
SELECT imlsreg.obereg,
imlsreg.obereg_name,
SUM(imls2016.visits) AS total_visits_2016,
SUM(imls2010.visits) AS total_visits_2010,
ROUND((CAST(SUM(imls2016.visits) AS decimal(10, 1)) - SUM(imls2010.visits)) / SUM(imls2010.visits) * 100, 1) AS pct_change_in_visits
FROM imls_regions AS imlsreg INNER JOIN imls_library_survey_2016 AS imls2016
ON imlsreg.obereg = imls2016.obereg
INNER JOIN imls_library_survey_2010 AS imls2010
ON imlsreg.obereg = imls2010.obereg
WHERE imls2016.visits >= 0 AND imls2010.visits >= 0
GROUP BY imlsreg.obereg, imlsreg.obereg_name
ORDER BY pct_change_in_visits ASC;