laravel实现按月或天或小时统计mysql数据的方法


Posted in PHP onOctober 09, 2019

在PHP里怎么比较简单的实现按时间(如按月,按天,按小时)来统计表里的数据呢?

如:要实现获取下图曲线图数据(ps:当然也可能是柱状图等,数据都是一样的),默认获取七天内的数据,点击今天,7天,15天,30天可任意切换,其中今天是按小时统计.

不过我的实现方法有一个小缺点,当某个小时内是没有数据的,那么该小时不会出现,不过这个应该可以通过前端的形式弥补

好了,废话不多说,上图上代码!

laravel实现按月或天或小时统计mysql数据的方法

1. 控制器内容

/**
   * [getsellerdata 获取某时间段内商户结算查询数据]
   * @param Request $request [description] start:起始时间 end:结束时间 
   * @return [type]      [description]
   */
  public function getsellerqudata(Request $request){
    $data = $this->dataanalysis->getSellerQuData($request->start,$request->end);
    return $data;    
  }

2. 库文件内容

/**
   * [getSellerQuData 获取商户结算数据 曲线]
   * @param [string] $start [起始时间]2017-08
   * @param [string] $end  [结束时间]
   * @return [type]    [description]
   */
  public function getSellerQuData($name,$start,$end){

    //计算时间差值,以决定格式化时间格式
    $diff = strtotime($end)-strtotime($start);

    //分组条件 1天内按小时分组,否则按天/月分组
    //86400/1天 2678400/1月
    if($diff<86400&&$diff>0){
      $sort = '%H';
    }elseif($diff<2678400){
      $sort = '%Y-%m-%d';
    }else{
      $sort = '%Y-%m';
    }
    //把数据添加时间按格式化时间分组求和,求和分两种,一种是直接求和,一种是满足case when条件的数据求和
    $query = DB::table('user_withdrawals as w')->select(DB::raw("FROM_UNIXTIME(created_at,'{$sort}') as thedata,sum(case when w.cash_type = 1 then w.money end) as xiabi,sum(case when w.cash_type = 2 then w.money end) as online,sum(w.money) as alls"))->groupBy(DB::raw("FROM_UNIXTIME(created_at,'{$sort}')"));

    //条件筛选 某时间段内
    if( !empty($start) ){
      $query->whereRaw('w.created_at >= ?',strtotime($start));
    }
    if( !empty($end) ){
      $query->whereRaw('w.created_at <= ?',strtotime($end));
    }

    $data = $query->get();

    return $data;
  }

以上这篇laravel实现按月或天或小时统计mysql数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php allow_url_include的应用和解释
Apr 22 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
php实现邮件发送并带有附件
Jan 24 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
Nov 20 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
php导出生成word的方法
Dec 25 PHP
CodeIgniter表单验证方法实例详解
Mar 03 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
thinkphp分页集成实例
Jul 24 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 #PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 #PHP
Laravel统计一段时间间隔的数据方法
Oct 09 #PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 #PHP
laravel按天、按小时,查询数据的实例
Oct 09 #PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 #PHP
Laravel find in set排序实例
Oct 09 #PHP
You might like
PHP将XML转数组过程详解
2013/11/13 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
express.js中间件说明详解
2019/03/19 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
python单元测试unittest实例详解
2015/05/11 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
Win8下python3.5.1安装教程
2020/07/29 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
PHP如何自定义函数
2016/09/16 面试题
c/c++某大公司的两道笔试题
2014/02/02 面试题
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
教师实习期自我鉴定
2013/10/06 职场文书
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
房产委托公证书样本
2014/04/04 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
公司授权委托书范本
2014/09/18 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python