统计一周内每天销售总额SQL语句

背景:
统计七天销售额 mysql 语句实现 带有详图、详细解析。
最近和同学们一起写了小项目练手,前端突然给我提了一个需求,就是让我提供一个接口,统计一周的销售总额和订单总量,刚看到这个需求时,还觉得特别简单,但是一去写SQL,就发现了大问题。那个sql 一直不知道改如何写。

疯狂百度,最后通过查看多个大佬的博客,终于整出了SQL 语句。

下方有表结构 和 sql 语句。

一、问题:

前端需求:

在这里插入图片描述

表结构

在这里插入图片描述

通过前端給过来的图,我们只需要统计一周内的订单总量和 订单总金额,一开始我的想法是写多个sql语句,然后再插入到一个数组中去,最后的结果你知道的,效率很低很低。

为了能够卷赢其他成员,我只好努力百度百度。

在这里插入图片描述

二、实现

最后实现的SQL: 不用烦,我当初第一眼和你看这个一模一样的,一度感觉自己从来没有学习过mysql。😂

        select a.clickDate,ifnull(b.salesSum,0) as salesSum,ifnull(b.orderCount,0) as orderCount
        from (
            SELECT curdate() as clickDate
            union all
            SELECT date_sub(curdate(), interval 1 day) as clickDate
            union all
            SELECT date_sub(curdate(), interval 2 day) as clickDate
            union all
            SELECT date_sub(curdate(), interval 3 day) as clickDate
            union all
            SELECT date_sub(curdate(), interval 4 day) as clickDate
            union all
            SELECT date_sub(curdate(), interval 5 day) as clickDate
            union all
            SELECT date_sub(curdate(), interval 6 day) as clickDate
        ) a left join (
            select date(payment_time) as datetime, sum(payment_price) as salesSum ,count(id) as orderCount
            from t_order
            where state in (1,2,3)
            group by date(payment_time)
        ) b on a.clickDate = b.datetime;

三、解析

下面给大家解释一下哈哦。

  1. curdate() :mysql 的函数,返回当前的日期

    在这里插入图片描述

  2. union all
    MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

  3. date_sub(curdate(), interval 1 day)

    也是Mysql 里的一种函数,它的原型是这样的 DATE_SUB(date,INTERVAL expr type)

    date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。INTERVAL 和 expr 是关键字,

    type 类型,这里的 day 就代表天数,type类型有多种,年月日时分等等好像都有,在这里没展示,有需求可以去查的哦。

    这句sql的意思就是 得到 当前时间减去一天的时间点 人话就是得到昨天的时间。

  4. (结果集)a 意思是将查询出来的结果集称作为 a 表

  5. ifnull(b.orderCount,0) 刚刚差点忘了,这个意思是补零的意思,就是你查询出来的结果是null,展示的时候给补齐为 0。

  6. a,b 两表,就是封装出来的两个结果集。

自言自语

从我关注的大佬博客中偷个图(_陈哈哈)微信群中扣不出。😂

在这里插入图片描述


如果哪里写的不对,记得留言哦,感谢阅读。一起加油哦。

希望你能在这里收货到知识,如果没能,就收个小表情吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值