Laravel怎样高效简洁的查询近7天以来的每天的数据量,并分成七天

问题描述

项目后台有个线状表需要一组近7天以来每天的数据量,用于展示数据幅度的变化,比如展示近7天以来新增文章的数量变化。
文章是主键是id,发布时间存在time字段,怎么高效简洁的查询这组数据。

Laravel怎样高效简洁的查询近7天以来的每天的数据量

解决办法

select DATE_FORMAT(a.timeDay,'%m-%d') as time,ifnull(b.price,0) as price
from ( 
    SELECT curdate() as timeDay  
    union all
    SELECT date_sub(curdate(), interval 1 day) as timeDay 
    union all
    SELECT date_sub(curdate(), interval 2 day) as timeDay 
    union all
    SELECT date_sub(curdate(), interval 3 day) as timeDay 
    union all
    SELECT date_sub(curdate(), interval 4 day) as timeDay 
    union all
    SELECT date_sub(curdate(), interval 5 day) as timeDay 
    union all
    SELECT date_sub(curdate(), interval 6 day) as timeDay 
) a left join ( 
    select date(deal_time) as time,sum(if(o.is_pay=1,o.real_price,0)) price 
    from goods_order o 
    where o.`status` = 1
    group by date(o.deal_time) // 这里写你按照七天分组的sql
) b on a.timeDay = b.time order by time
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

做个统计表

1年前
讨论数量: 7
select date(`time`) as day,count(*)  from table where time > XXX group by day

再根据缺失的补齐0

1年前 评论
威尼斯 (楼主) 1年前
porygonCN

可以做一个T+1的统计结果表,查询不再需要去数据中现筛选统计

1年前

为什么会查 7 次呢,以时间范围为条件,日期分组进行合计,一次查询就够了

1年前 评论
威尼斯 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!