请求解释BigQuery SQL查询:功能及预期结果说明
BigQuery SQL查询解释与结果说明
整体功能
这个查询的核心是统计有订单记录的仓库的订单处理占比情况,从仓库表和订单表中提取数据,最终输出每个仓库的订单量、全平台总订单量,以及该仓库订单占总订单的比例区间分类。
逐段逻辑拆解
1. 表关联
用LEFT JOIN把warehouse(仓库表)和orders(订单表)通过warehouse_id关联,确保每个仓库都能匹配到对应的所有订单(哪怕仓库没有订单,也会生成一条记录,但后续会被过滤)。
2. 字段计算
warehouse.warehouse_id:直接取仓库的唯一IDCONCAT(warehouse.state,': ', warehouse_alias) AS warehouse_name:把仓库所在州和仓库别名拼接成可读性更强的仓库名称,格式为「州名: 别名」COUNT(orders.order_id) AS num_of_orders:统计当前仓库的有效订单数(因为LEFT JOIN中无订单的仓库,order_id为NULL,COUNT会自动忽略NULL值,所以这个数就是该仓库实际处理的订单量)- 子查询
(SELECT COUNT(*) FROM \master-deck-385111.warehouse_orders.orders`) AS total_orders`:计算全平台所有订单的总数,这个值在所有仓库的行里都相同 CASE条件判断:
先计算当前仓库订单数占总订单数的比例,再根据比例划分三个区间:- 比例≤20%:返回「完成0-20%的订单」(原SQL里写的
fo是笔误,应为of) - 20%<比例≤60%:返回「完成21-60%的订单」
- 比例>60%:返回「完成超过60%的订单」(原SQL里的
6-%是笔误,应为60%)
- 比例≤20%:返回「完成0-20%的订单」(原SQL里写的
3. 分组与过滤
GROUP BY warehouse_id, warehouse_name:按仓库ID和仓库名称分组,确保每个仓库只生成一行统计数据HAVING COUNT(orders.order_id) >0:过滤掉没有任何订单的仓库,只保留有订单记录的仓库
查询结果示例
执行后返回的每一行对应一个有订单的仓库,字段如下:
| warehouse_id | warehouse_name | num_of_orders | total_orders | fulfillment_summary |
|---|---|---|---|---|
| W001 | CA: 洛杉矶仓 | 120 | 500 | fulfilled 21-60% of the orders |
| W002 | NY: 纽约仓 | 80 | 500 | fulfilled 0-20% of the orders |
| W003 | TX: 达拉斯仓 | 300 | 500 | fulfilled more than 60% of the orders |
内容的提问来源于stack exchange,提问作者Asad Ullah
相关产品推荐
相关产品推荐

