首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SQL集训 - 电商场景 - 计算商城中2021年每月的GMV

SQL集训 - 电商场景 - 计算商城中2021年每月的GMV

原创
作者头像
糖醋_诗酒
修改2024-10-25 10:59:14
修改2024-10-25 10:59:14
4960
举报
题目
题目

· 问题描述

场景逻辑说明

  • 用户将购物车中多件商品一起下单时,订单总表会生成一个订单(但此时未付款,status-订单状态0,表示待付款);
  • 当用户支付完成时,在订单总表修改对应订单记录的status-订单状态1,表示已付款;
  • 若用户退货退款,在订单总表生成一条交易总金额为负值的记录(表示退款金额,订单号为退款单号,status-订单状态为2表示已退款)。

问题:请计算商城中2021年每月的GMV,输出GMV大于10w的每月GMV,值保留到整数。

:GMV为已付款订单和未付款订单两者之和。结果按GMV升序排序。

· 思路

  • 筛选满足条件的记录:
    • 退款的金额不算(付款的记录还在,已算过一次):where status != 2
    • 2021年的记录:and YEAR(event_time) = 2021
  • 按月份分组:group by DATE_FORMAT(event_time, "%Y-%m")
  • 计算GMV:(sum(total_amount) as GMV
  • 保留整数:ROUND(x, 0)
  • 筛选GMV大于10w的分组:having GMV > 100000

· 代码

代码语言:sql
复制
select DATE_FORMAT(event_time, "%Y-%m") as `month`,
    round(sum(total_amount), 0) as GMV
from tb_order_overall
where status != 2 and YEAR(event_time) = 2021
group by `month`
having GMV > 100000
order by GMV;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档