SQL GROUP BY未返回预期结果:同一用户单日数据需合并为一行
问题解决:SQL分组错误导致同一用户单日多行数据
问题原因
你的SQL中GROUP BY子句使用了完整时间戳sent_at,而非转换后的日期CAST(sent_at AS DATE),这会让同一用户同一天内不同时间的记录被拆分成独立分组,最终返回多行重复日期的数据。
修改后的SQL代码
SELECT anonymous_id, SUM(plan_cost) as plan_cost, CAST(sent_at AS DATE) as date, COUNT(*) OVER (PARTITION BY anonymous_id) as ocurrences FROM "****-348311.****_prod.purchase" GROUP BY anonymous_id, CAST(sent_at AS DATE) -- 改为按日期分组,而非原时间戳 ORDER BY date asc;
结果对比
当前结果
| anonymous_id | plan_cost | date | ocurrences |
|---|---|---|---|
| 5ac5ff46-ea1c-4f00-891e-fd74e618588f | 294.42 | 2023-05-10 | 2 |
| 5ac5ff46-ea1c-4f00-891e-fd74e618588f | 346.48 | 2023-05-10 | 2 |
期望结果
| anonymous_id | plan_cost | date | ocurrences |
|---|---|---|---|
| 5ac5ff46-ea1c-4f00-891e-fd74e618588f | 640.9 | 2023-05-10 | 2 |
内容的提问来源于stack exchange,提问作者Juan Lozano
相关产品推荐
相关产品推荐

