【发布时间】:2020-05-21 18:26:01
【问题描述】:
所以我正在尝试解决一个有点难以解释的问题,并且我无法公开我正在使用的任何数据,但我试图弄清楚的是运行时出现以下错误下面的查询 - 我已经重命名了一些敏感问题的表/列,但结构应该是相同的
“来自查询引擎的错误 - 超出整数范围:无穷大”
WITH accounts AS (
SELECT t.user_id
FROM table_a t
WHERE t.type like '%Something%'
),
CTE AS (
SELECT
st.x_user_id,
ad.name as client_name,
sum(case when st.score_type = 'Agility' then st.score_value else 0 end) as score,
st.obs_date,
ROW_NUMBER() OVER (PARTITION BY st.x_user_id,ad.name ORDER BY st.obs_date) AS rn
FROM client_scores st
LEFT JOIN account_details ad on ad.client_id = st.x_user_id
INNER JOIN accounts on st.x_user_id = accounts.user_id
--WHERE st.x_user_id IN (101011115,101012219)
WHERE st.obs_date >= '2020-05-18'
group by 1,2,4
)
SELECT
c1.x_user_id,
c1.client_name,
c1.score,
c1.obs_date,
CAST(COALESCE (((c1.score - c2.score) * 1.0 / c2.score) * 100, 0) AS INT) AS score_diff
FROM CTE c1
LEFT JOIN CTE c2 on c1.x_user_id = c2.x_user_id and c1.client_name = c2.client_name and c1.rn = c2.rn +2
我知道该查询确实有效,因为当我将第一个 CTE 和硬编码 2 id's 去掉到 where 子句中时,我注释掉它返回我想要的数据。但我还需要它基于第一个 CTE 运行,该 CTE 具有 ~5k 唯一 ID
如果我尝试使用 2 个 id,这是一个示例输出:
根据上述每个 id 返回的行数,我预计它应该返回 5000 * 3 行 = 150000。
什么可能导致整数错误超出范围?
【问题讨论】: