php+mysql获取7天、30天的统计数据,没有数值的补充0 By勤勤学长
需求:查找近7天的订单数量、订单金额以及他们的日期。
方法1:查到的大部分是这种写法。需要修改的地方
qqxz_orders 表名、
ctime 用作归类的字段我表中是时间戳,使用的时候需要用 FROM_UNIXTIME 格式化
total订单金额
就这三个。
select b.week_total,a.click_date,ifnull(b.count,0) as count
from (SELECT curdate() as click_dateunion allSELECT date_sub(curdate(), interval 1 day) as click_dateunion allSELECT date_sub(curdate(), interval 2 day) as click_dateunion allSELECT date_sub(curdate(), interval 3 day) as click_dateunion allSELECT date_sub(curdate(), interval 4 day) as click_dateunion allSELECT date_sub(curdate(), interval 5 day) as click_dateunion allSELECT date_sub(curdate(), interval 6 day) as click_date
) a left join (select date(FROM_UNIXTIME(ctime,'%Y%m%d')) as datetime, count(*) as count ,sum(total) as week_totalfrom qqxz_ordersgroup by date(FROM_UNIXTIME(ctime,'%Y%m%d'))
) b on a.click_date = b.datetime
方法二:使用PHP处理
https://blog.csdn.net/umufeng/article/details/81046489(我是看这里知道这种写法的,方法一做不了30天的)
但是博主提供的代码中,没提到$scan_qushi的格式是什么样的,对我这种菜鸡来说,根本无法直接使用。研究了几个小时后终于给我整出来了,我还是以7天举例。
SELECT count(*) as count,date(FROM_UNIXTIME(ctime,"%Y%m%d")) as ctime,sum(total) as total FROM `qqxz_orders` WHERE ( DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(from_unixtime(ctime)) ) GROUP BY date_format(from_unixtime(ctime),'%Y%m%d')
获取到的数据是这样
预设最近七天的数值
$day = 7;for ($i = $day - 1; 0 <= $i; $i--) {$result[] = date('Y-m-d', strtotime('-' . $i . ' day'));$nums[] = 0;$total[] = 0;}
array_walk($order_list_arr, function ($value, $key) use ($result, &$nums,&$total) {$index = array_search($value['ctime'],$result);$nums[$index] = $value['count'];$total[$index] = $value['total'];});$data = ['day' => $result,'nums' => $nums,'total' =>$total];halt($data);
打印看效果
完整代码
$order_list = db('orders')->field('count(*) as count,date(FROM_UNIXTIME(ctime,"%Y%m%d")) as ctime,sum(total) as total')->group("date_format(from_unixtime(ctime),'%Y%m%d')")->where('DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(from_unixtime(ctime))')->select();
//sql语句
//SELECT count(*) as count,date(FROM_UNIXTIME(ctime,"%Y%m%d")) as ctime,sum(total) as total FROM `qqxz_orders` WHERE ( DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(from_unixtime(ctime)) ) GROUP BY date_format(from_unixtime(ctime),'%Y%m%d')$order_list_arr = $order_list->toArray();$day = 7;for ($i = $day - 1; 0 <= $i; $i--) {$result[] = date('Y-m-d', strtotime('-' . $i . ' day'));$nums[] = 0;$total[] = 0;}array_walk($order_list_arr, function ($value, $key) use ($result, &$nums,&$total) {$index = array_search($value['ctime'],$result);$nums[$index] = $value['count'];$total[$index] = $value['total'];});$data = ['day' => $result,'nums' => $nums,'total' =>$total];halt($data);
php+mysql获取7天、30天的统计数据,没有数值的补充0 By勤勤学长相关推荐
- Mysql中查询连续一段时间内统计数据
Mysql中查询连续一段时间内统计数据 在一次生产环境中遇到统计当前日期的前10天每天的订单量,一开始想到的就是根据日期进行分组统计,但在查询的时候会存在一个问题:有可能某一天没有订单交易,日期分组中 ...
- MySQL基础——按月/周/日分组统计数据
MySQL基础--按月/周/日分组统计数据 在使用MySQL进行查询时,很多时候,我们需要按时间段进行统计,例如每周,每月的数据:这里我们需要使用到MySQL的关键词:DATE_FORMAT 1. 语 ...
- mysql 获取某个时间段每一天、每一个小时的统计数据
获取每一天的统计数据 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:1 ...
- mysql获取当天每小时统计_详解mysql 获取某个时间段每一天、每一个小时的统计数据...
获取每一天的统计数据 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:1 ...
- 2.0中获取数据库连接统计数据
作者: http://blog.joycode.com/liuhuimiao/ .NET 2.0中的SqlConnection多了一个StatisticsEnabled属性和ResetStatisti ...
- c 窗体中添加mysql控件,MYSQL 统计数据-svn服务器启动-WinFrom控件库|.net开源控件库|HZHControls官网...
统计数据的重要性相信了解ORACLE数据库的都非常清楚,他是生成执行计划的唯一标准,所以统计数据是否准确直接影响到执行计划的正确性, 关于MYSQL虽然没有ORACLE那么多维度的统计数据(比如直方图 ...
- mysql获取当月数据_MySQL中获取天、周、月等数据
MySQL中获取天.周.月等数据 1.今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 2.昨天 SELECT * FROM 表名 ...
- mysql 获取 row的id_转: MYSQL获取更新行的主键ID
在某些情况下我们需要向数据表中更新一条记录的状态,然后再把它取出来,但这时如果你在更新前并没有一个确认惟一记录的主键就没有办法知道哪条记录被更新了. 举例说明下: 有一个发放新手卡的程序,设计数据库时 ...
- mysql 获取当前日期及格式化
MYSQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段 format:日期格式 返回系统日期,输出 ...
最新文章
- 优化eclipse启动速度
- 运营商线路细分_电信运营行业细分领域分析
- aspx 判断字符串是否为decimal_python3之判断字符串是否只为数字!isdigit()、isnumeric()方法...
- markdown输出为pdf没有图片怎么办?
- java成员内部类_Java中的内部类(二)成员内部类
- 通过多组的HSRP实现网络的冗余和负载
- Android 系统(203)---Android包管理机制(一)PackageInstaller的初始化
- 经典算法排序——插入排序
- Android SurfaceFlinger 学习之路(五)----VSync 工作原理
- 使用训练好的googlenet caffemodel进行图片分类
- vim 配置文件 (未完待续)
- HTML|按钮和多选框
- 免费好用的文字转语音工具
- 荆门市建设企业网站多少钱,荆门口碑好的网站建设多少钱
- 骨传导耳机有哪些品牌、最好的骨传导蓝牙耳机品牌介绍
- ubuntu下flann库编译报错处理
- 网格交易模型 股票网格交易 期货网格交易 策略开发
- 7、Instant-ngp
- 【计算题】(三)连续与导数
- BULK INSERT如何将大量数据高效地导入SQL Server(转)
热门文章
- 【文智背后的奥秘】系列篇——关键词智能提取
- STL——SET操作与并交差
- 【2018版】Docker入门视频课程-汤小洋-专题视频课程
- 数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
- 如何把数字金额转换成中文大写
- 《惢客创业日记》2018.12.29(周六)取代手机的“量子智能标签”
- 问题:浏览器自动填充input密码框
- 【前端进阶】前端进阶知识补充
- 【科学文献计量】networkx绘制网络图的基本属性,图形读写以及无向/有向图形绘制详解
- Android自定义Dialog(仿QQ同步助手退出对话框)