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 读取shell管道传输过来的内容
Mar 01 PHP
利用php+mysql来做一个功能强大的在线计算器
Oct 12 PHP
php 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
PHP 第三节 变量介绍
Apr 28 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
Apr 24 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
laravel中的fillable和guarded属性详解
Oct 23 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
PHP print类函数使用总结
2010/06/25 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
js tab效果的实现代码
2009/12/26 Javascript
Js sort排序使用方法
2011/10/17 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
python中的错误处理
2016/04/10 Python
python安装与使用redis的方法
2016/04/19 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
通过python实现弹窗广告拦截过程详解
2019/07/10 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
Python random模块的使用示例
2020/10/10 Python
捷克时尚网上商店:OTTO
2018/03/15 全球购物
《郑和远航》教学反思
2014/04/16 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
迎新生标语大全
2014/10/06 职场文书
项目转让协议书
2014/10/27 职场文书
年底个人总结范文
2015/03/10 职场文书
2015年除四害工作总结
2015/07/23 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
SQL中的三种去重方法小结
2021/11/01 SQL Server