MySQL中实现连续日期内数据统计,缺省天数0补全
某一日,需要查询订单表中一个月每天的金额数
查询出数据如下:
array(14) {
[0] => array(2) {
["money"] => string(7) "2000.00"
["times"] => string(2) "12"
}
[1] => array(2) {
["money"] => string(7) "6000.00"
["times"] => string(2) "14"
}
[2] => array(2) {
["money"] => string(8) "31569.00"
["times"] => string(2) "15"
}
[3] => array(2) {
["money"] => string(9) "134596.50"
["times"] => string(2) "16"
}
[4] => array(2) {
["money"] => string(7) "4000.00"
["times"] => string(2) "17"
}
[5] => array(2) {
["money"] => string(8) "20525.00"
["times"] => string(2) "18"
}
[6] => array(2) {
["money"] => string(7) "2000.00"
["times"] => string(2) "20"
}
[7] => array(2) {
["money"] => string(7) "6000.00"
["times"] => string(2) "21"
}
[8] => array(2) {
["money"] => string(7) "9000.00"
["times"] => string(2) "22"
}
[9] => array(2) {
["money"] => string(7) "2000.00"
["times"] => string(2) "23"
}
[10] => array(2) {
["money"] => string(7) "2000.00"
["times"] => string(2) "25"
}
[11] => array(2) {
["money"] => string(7) "7000.00"
["times"] => string(2) "26"
}
[12] => array(2) {
["money"] => string(8) "10000.00"
["times"] => string(2) "27"
}
[13] => array(2) {
["money"] => string(9) "212263.28"
["times"] => string(2) "28"
}
}
只查询了14天的数据,而且中间还有几天没有数据,但是我想要没查询的天数显示为0,这个时候就需要先给数据加个起点!如果没有1号,我们就把一号加上,有就略过! 然后还要加个终点,终点应放在原始数组中,不然算法不可能自作主张的添加数据,我这里默认每个月31号,毕竟要做折线统计图,日期是固定的,方法如下:
if ($list[0]['times'] !=1){
array_unshift($list,array('money' => '0', 'times' =>'01')); //这样就添加了起点
} if ($list[count($list)-1]['times'] !=31){
$list[] = array('money' => '0', 'times' => '31');//这样就添加了终点
} $last = '1'; foreach($list as $r) {
while($last && $last < $r['times']) {
$res[] = array('money' => '0','times' => "$last"); $last +=1;
}
$res[] = $r;
$last +=1;
} // $res就是最终的结果
dump($res);
结果如下:
array(31) {
[0] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "01"
}
[1] => array(2) {
["money"] => string(1) "0"
["times"] => string(1) "2"
}
[2] => array(2) {
["money"] => string(1) "0"
["times"] => string(1) "3"
}
[3] => array(2) {
["money"] => string(1) "0"
["times"] => string(1) "4"
}
[4] => array(2) {
["money"] => string(1) "0"
["times"] => string(1) "5"
}
[5] => array(2) {
["money"] => string(1) "0"
["times"] => string(1) "6"
}
[6] => array(2) {
["money"] => string(1) "0"
["times"] => string(1) "7"
}
[7] => array(2) {
["money"] => string(1) "0"
["times"] => string(1) "8"
}
[8] => array(2) {
["money"] => string(1) "0"
["times"] => string(1) "9"
}
[9] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "10"
}
[10] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "11"
}
[11] => array(2) {
["money"] => string(7) "2000.00"
["times"] => string(2) "12"
}
[12] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "13"
}
[13] => array(2) {
["money"] => string(7) "6000.00"
["times"] => string(2) "14"
}
[14] => array(2) {
["money"] => string(8) "31569.00"
["times"] => string(2) "15"
}
[15] => array(2) {
["money"] => string(9) "134596.50"
["times"] => string(2) "16"
}
[16] => array(2) {
["money"] => string(7) "4000.00"
["times"] => string(2) "17"
}
[17] => array(2) {
["money"] => string(8) "20525.00"
["times"] => string(2) "18"
}
[18] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "19"
}
[19] => array(2) {
["money"] => string(7) "2000.00"
["times"] => string(2) "20"
}
[20] => array(2) {
["money"] => string(7) "6000.00"
["times"] => string(2) "21"
}
[21] => array(2) {
["money"] => string(7) "9000.00"
["times"] => string(2) "22"
}
[22] => array(2) {
["money"] => string(7) "2000.00"
["times"] => string(2) "23"
}
[23] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "24"
}
[24] => array(2) {
["money"] => string(7) "2000.00"
["times"] => string(2) "25"
}
[25] => array(2) {
["money"] => string(7) "7000.00"
["times"] => string(2) "26"
}
[26] => array(2) {
["money"] => string(8) "10000.00"
["times"] => string(2) "27"
}
[27] => array(2) {
["money"] => string(9) "212263.28"
["times"] => string(2) "28"
}
[28] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "29"
}
[29] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "30"
}
[30] => array(2) {
["money"] => string(1) "0"
["times"] => string(2) "31"
}
}
同样的. 12个月也可以这样操作,只要把终点改为12就可以了
MySQL中实现连续日期内数据统计,缺省天数0补全的更多相关文章
- 在Sqlserver下巧用行列转换日期的数据统计
在Sqlserver下巧用行列转换日期的数据统计 前言 在SQLSERVER 中有很多统计函数的基础语法,有使用Group By 或 partition by 后配合Sum,Count(*) 等用法. ...
- MYSQL中delete删除多表数据
MYSQL中delete删除多表数据 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 ...
- mysql中把一个表的数据批量导入另一个表中
mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...
- MySQL 中的数据库名称、数据表名称、字段名称
如何查询Oracle,Sql Server,MySQL 中的数据库名称.数据表名称.字段名称 分类: Database2012-09-24 22:16 7034人阅读 评论(0) 收藏 举报 数据库s ...
- C++ 语言中的重载、内联、缺省参数、隐式转换等机制展现了很多优点
C++ 语言中的重载.内联.缺省参数.隐式转换等机制展现了很多优点,但是这些 优点的背后都隐藏着一些隐患.正如人们的饮食,少食和暴食都不可取,应当恰到好处. 我们要辨证地看待 C++的新机制,应该恰如 ...
- GROUP BY和HAVING 以及mysql中常用的日期函数
一.mysql中的GROUP BY和HAVINGGROUP BY常见的是和聚合函数(SUM,MIN,MAX,COUNT)搭配使用. 比如:SELECT category,SUM(money) AS ` ...
- PHP+Mysql+jQuery实现中国地图区域数据统计(raphael.js)
使用过百度统计或者cnzz统计的童鞋应该知道,后台有一个地图统计,不同访问量的省份显示的颜色也不一样,今天我将带领大家开发一个这样的案例.上一篇<使用raphael.js绘制中国地图>文章 ...
- 向mysql中插入Date类型的数据
先看数据库表的定义 date字段为sql.date类型.我要向其中插入指定的日期和当前日期. 一.插入当前日期 思路:先获取当前系统,在将当前系统时间转换成sql类型的时间,然后插入数据库.代码如下 ...
- mysql 中时间和日期函数应用
一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------------------- ...
随机推荐
- pip install psycopg2出现python setup.py egg_info failed with error code 1 in /tmp/pip-build-YtLeN3/psycopg2错误处理
折腾了一上午flask部署,到最后访问域名还是出现Application Error错误提示.估计是程序还有问题,想着直接clone书中作者的代码先试试能不能部署成功.结果在执行pip install ...
- 探索Visual Studio生成的.vs文件夹内部结构和作用
这里直接先将我摸索出的结果贴出来,文章后面会一一详细说明和分析:.vs目录是用来存储当前用户在解决方案中的工作配置,具体包括VS关闭前最后的窗口布局.最后打开的选项卡/操作记录/文件文档.某些自定义配 ...
- Android+openCV 的坑
之前一直用IntelliJ IDEA 导入 opencv_android_sdk 的 java 包,在最后一步finish时,始终出错. 后来重新安装Android Studio 重复以上步骤,能顺利 ...
- Tomcat目录结构详解
1.bin: 该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe.tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口 ...
- 2018-2019-1 20189201 《LInux内核原理与分析》补漏_1125写
我的愿望是 好好学习Linux 一.题目与解释 1 test.txt 中的内容是: No Name Mark Percent 01 tom 69 91 02 jack 71 87 03 alex 68 ...
- 下面为初学者分享一下SQL 数据库学习资料
一.基础 1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份 ...
- 第二篇flask响应方式
响应三件套 1.Flask中的HTTPResponse @app.route('/home') # app中的route装饰器 def home(): # 视图 return '登陆成功' #HTTP ...
- Centos6.5升级openssh、OpenSSL和wget
1.OpenSSL 1.1.查看版本 使用如下命令查看版本: openssl version 1.2.安装gcc依赖 yum -y install gcc gcc-c++ 1.3.安装配置 ./con ...
- ulimit -c unlimited的使用(转载)
ulimit -c unlimited ulimint -a 用来显示当前的各种用户进程限制Linux对于每个用户,系统限制其最大进程数,为提高性能,可以根据设备资源情况,设置个Linux用户的最大进 ...
- Mac解决某些命令失效问题
PS:今天安装groovy,需要设置环境变量,vim -/.bash_profile,然后立马执行了source -/.bash_profile.最后,发现ls,more,vim等常用命令失效了.立马 ...