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(); +-------------------- ...
随机推荐
- 《剑指offer》字符串的排列
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- 虚拟机Ubuntu16.04无法进入图形界面 The system is running in low-graphics mode
安装的虚拟机Ubuntu16.04 64位本可以正常使用,在安装了许多软件包(caffe)后不知哪里配置出现问题,出现The system is running in low-graphics mod ...
- Java集合实现
set: public class BSTSet<E extends Comparable<E>> implements Set<E> { private BST& ...
- min-max容斥 hdu 4336 && [BZOJ4036] 按位或
题解: 之前听说过这个东西但没有学 令$max(S)$表示S中编号最大的元素,$min(S)$表示编号中最小的元素 $$max(S)=\sum{T \in S} {(-1)}^{|T|+1} min( ...
- 4337: BJOI2015 树的同构
题解: 树的同构的判定 有根树从根开始进行树hash 先把儿子的f进行排序 $f[i]=\sum_{j=1}^{k} { f[j]*prime[j]} +num[i]$(我没有仔细想这样是不是树是唯一 ...
- Django搭建博客文章---模型层
页面展示所需字段 1.文章标题---文本类型 2.文章摘要---文本类型 3.文章内容--文本类型 4.唯一的ID标记---int数字类型(自增.主键) 5.发布日期--日期类型 模型层定义字段 1. ...
- 微信小程序--家庭记账本开发--02
代码文件的了解 对于一个程序的开发,代码的了解的必须的,不同的后缀名文件有着不同的作用,通过学习,对于微信小程序开发中的文件有了自己的理解. 文件概述 一个微信小程序一般有有pages文件夹,util ...
- WebLogic使用总结(一)——WebLogic安装
一.下载WebLogic 到Oracle官网http://www.oracle.com/ 下载WebLogic(根据自己的情况选择),本文档下载的是Generic WebLogic Server an ...
- 网络流之最大流Dinic算法模版
/* 网络流之最大流Dinic算法模版 */ #include <cstring> #include <cstdio> #include <queue> using ...
- Codechef July Challenge 2018 : Subway Ride
传送门 首先(想了很久之后)注意到一个性质:同一条边有多种颜色的话保留3种就可以了,这是因为假如最优解要求当前位置与相邻两条边都不相同,那么只要有3条边,就肯定可以满足这一点. 完事就做一个nlogn ...