请求协助验证各门店2020-2021年销售额对比SQL查询及趋势图制作
门店2020-2021年销售额查询的SQL优化与验证
你的需求是获取各门店2020、2021年的销售额对比数据并制作趋势图表,先帮你分析原SQL的问题,再给出优化方案:
原SQL存在的问题
distinct关键字完全多余:group by store_name, extract(year from date)已经会按门店+年份分组,每组仅返回一行汇总数据,加distinct不会改变结果,反而可能增加不必要的计算开销。- 拆分两个CTE再
union all的写法可以简化,没必要分开处理两年的数据。
优化后的SQL
SELECT store_name AS store, EXTRACT(YEAR FROM date) AS year, CAST(SUM(sale_dollars) AS INT64) AS total_sales FROM ( SELECT store_name, date, sale_dollars FROM `bigquery-public-data.iowa_liquor_sales_forecasting.2020_sales_train` UNION ALL SELECT store_name, date, sale_dollars FROM `bigquery-public-data.iowa_liquor_sales_forecasting.2021_sales_predict` ) GROUP BY store, year ORDER BY store, year;
补充说明
- 新增
ORDER BY子句:按门店和年份排序,结果更规整,方便后续做图表时直接使用。 - 可选年份过滤:如果担心表中混入其他年份的数据,可以在子查询里加
WHERE EXTRACT(YEAR FROM date) IN (2020, 2021),确保只取目标年份的数据。 - 结果验证:可以取几个门店单独核对,比如查询某门店2020年的明细销售额总和,和汇总结果对比,确认计算正确。
趋势图表制作建议
拿到查询结果后,你可以:
- 导出数据到Excel,用柱状图对比同门店两年的销售额,或用折线图展示各门店连续两年的销售趋势;
- 直接在BigQuery中连接Looker Studio(原Data Studio),拖拽字段生成可视化图表,更高效。
内容的提问来源于stack exchange,提问作者lilpearce
相关产品推荐
相关产品推荐

