背景: 统计七天销售额 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;
下面给大家解释一下哈哦。
DATE_SUB(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。INTERVAL 和 expr 是关键字,
type 类型,这里的 day
就代表天数,type类型有多种,年月日时分等等好像都有,在这里没展示,有需求可以去查的哦。
这句sql的意思就是 得到 当前时间减去一天的时间点 人话就是得到昨天的时间。
a 表
从我关注的大佬博客中偷个图(_陈哈哈)微信群中扣不出。😂
如果哪里写的不对,记得留言哦,感谢阅读。一起加油哦。 希望你能在这里收货到知识,如果没能,就收个小表情吧。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有