我有以下查询:
SELECT
p_id,
r_date,
SUM(CASE WHEN p_type='h' AND post_p='c' THEN 1 ELSE 0 END) as test1
FROM (
SELECT 152234223 AS p_id,
date AS r_date,
sequence as p_type,
LEAD(p_type, 1) OVER
(PARTITION BY u_id ORDER BY visit_id) AS post_p
FROM (Table_date_range([152234223.ses_],Timestamp('25022016'),Timestamp('29022016')))
GROUP BY 1,2
此查询将返回 SUM 的结果,例如 145。 但是,如果我将总和的别名更改为“testing”或“test1234567890”,它将返回不同的值,高于或低于 145。
我想知道是否有人可以解释一下。需要解决方案!
非常感谢
最佳答案
如果您可以共享您的数据集,那么验证这一点会更容易... 但仅仅通过阅读你的代码:
您的问题似乎出在这里:
LEAD(p_type, 1) OVER
(PARTITION BY u_id ORDER BY u_id) AS post_p
当您按相同的属性进行分区和排序时,每个分区中记录的顺序可能会不一致。因此,每次运行查询时,LEAD() 可能会返回不同的结果。
别名变化的原因可能与缓存结果的返回有关。
关于database - 谷歌大查询 : SUM returns different results even on SUM alias changes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36132972/