BigQuery聚合查询报错排查及月度销售额计算正确代码咨询
SQL报错分析与解决
错误原因
当查询中使用SUM()这类聚合函数时,SELECT语句里的非聚合列必须出现在GROUP BY子句中,这是SQL的核心规则。你的代码里同时选了date_only(由date转换而来)、purchase_price这两个非聚合列,又用了SUM()做聚合,但没指定分组,数据库无法确定这些非聚合列该如何与聚合结果对应,所以抛出了报错。
正确代码
根据计算月度销售额的需求,分两种场景给出正确写法:
场景1:按日期统计每日销售额
如果需要查看12月每天的销售额,需按日期分组:
SELECT CAST(date AS DATE) AS date_only, SUM(CAST(purchase_price AS FLOAT64)) AS daily_total FROM `lash09.customer_data.customer_purchase` WHERE date BETWEEN '2020-12-01' AND '2020-12-31' GROUP BY date_only ORDER BY date_only
场景2:统计12月整体总销售额
如果只需要整个12月的销售总额,无需保留非聚合列:
SELECT SUM(CAST(purchase_price AS FLOAT64)) AS monthly_total FROM `lash09.customer_data.customer_purchase` WHERE date BETWEEN '2020-12-01' AND '2020-12-31'
内容的提问来源于stack exchange,提问作者Shinjiro Yoshioka
相关产品推荐
相关产品推荐

