Google BigQuery中的分组统计:按类别计算总销量与平均售价
嘿,这两个需求在Google BigQuery里用简单的聚合SQL就能轻松搞定!我先假设你的表结构大概是这样的(如果字段名和表名不一样,直接替换成你自己的就行):
- 表名:
sales_data(如果在特定项目/数据集下,记得写成your_project.your_dataset.sales_data) - 类别字段:
product_category - 售出数量字段:
quantity_sold - 商品单价字段:
unit_price
1. 按类别统计售出商品总数量
用SUM()聚合函数配合GROUP BY就能实现,按类别分组后直接求和售出数量:
SELECT product_category, SUM(quantity_sold) AS total_quantity_sold FROM `sales_data` -- 可选:加过滤条件,比如只统计2024年的销售数据 -- WHERE sale_date >= '2024-01-01' GROUP BY product_category ORDER BY total_quantity_sold DESC; -- 可选:按总销量降序排列,快速查看热门类别
2. 按类别计算商品平均售价
这里要注意两种常见的「平均售价」统计逻辑,你可以根据实际需求选择:
方式一:单个商品单价的算术平均值
如果是想统计所有售出商品的单价的平均水平,直接用AVG()函数:
SELECT product_category, ROUND(AVG(unit_price), 2) AS average_unit_price -- ROUND用来保留两位小数,可选 FROM `sales_data` -- 可选:加过滤条件 -- WHERE sale_date BETWEEN '2024-01-01' AND '2024-06-30' GROUP BY product_category ORDER BY average_unit_price DESC;
方式二:总销售额除以总售出数量(更贴近实际营收的平均售价)
这种方式是计算该类别商品的总营收除以总销量,能更准确反映每卖出一件商品的平均收入:
SELECT product_category, ROUND(SUM(unit_price * quantity_sold) / SUM(quantity_sold), 2) AS average_selling_price FROM `sales_data` -- 可选:加过滤条件 -- WHERE product_category IS NOT NULL -- 排除空类别数据 GROUP BY product_category ORDER BY average_selling_price DESC;
小提示:如果你的表是分区表,记得加上分区过滤条件(比如按日期分区时指定sale_date范围),能减少BigQuery扫描的数据量,降低查询成本哦~
内容的提问来源于stack exchange,提问作者Huzefa Sadikot
相关产品推荐
相关产品推荐

