
为了评估不同城市的订单状态分布,我们需要统计每个城市中三种状态(完成、被货主取消、被司机取消)的订单数量,并将结果以行转列的形式展示。
任务:
从 hll_t1
(订单表)和 hll_t2
(用户角色表)中,统计每个城市中三种状态(完成、被货主取消、被司机取消)的订单数量,并将结果以行转列的形式展示。
考点:
- 连接操作: 需要将订单表和用户角色表进行连接。
- 条件过滤: 需要过滤出司机的订单。
- 聚合函数: 需要使用聚合函数计算每种状态的订单数量。
- 行转列: 使用
CASE
语句和聚合函数将行数据转换为列数据。
hll_t1,订单表
order_id | usr_id | driver_id | cty | status | order_dt |
---|---|---|---|---|---|
1 | 1 | d16 | 北京 | cancel_by_driver | 2020-01-23 |
2 | 6 | d12 | 上海 | completed | 2020-01-24 |
3 | 3 | d15 | 深圳 | cancel_by_usr | 2020-01-25 |
hll_t2,用户角色表,banned=1表示该用户被禁止,role有两个枚举值,usr表示货主、driver表示司机。
usr_id | banned | role |
---|---|---|
1 | 0 | usr |
2 | 0 | usr |
3 | 0 | usr |
 成为会员,解锁300道大厂数分SQL真题
MySQL 8.0