php mysql 统计_PHP和MySQL实现优化统计每天数据

在互联网项目中,对项目的数据分析必不可少。通常会统计某一段时间内每天数据总计变化趋势调整营销策略。下面来看以下案例。

案例

在电商平台中通常会有订单表,记录所有订单信息。现在我们需要统计某个月份每天订单数及销售金额数据从而绘制出如下统计图,进行数据分析。

0d2daf3cdab7f14be2c2f491282ccf47.png

订单表数据结构如下:order_idorder_sntotal_priceenterdate25396A4E610E250C2D378D7EC94179E14617F2306.002017-04-01 17:23:26

25397EAD217C0533455EECDDE39659ABCDAE917.902017-04-01 22:15:18

25398032E6941DAD44F29651B53C41F6B48A0163.032017-04-02 07:24:36

此时查询某月各天下单数,总金额应当如何做呢?

一般方法

首先最容易想到的方法,先利用 php 函数

代码如下:

$month = '04';

$year = '2017';

$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year); //当月最后一天

//构造每天的数组

$days_arr = array();

for($i=1;$i<=$max_day;$i++){

array_push($days_arr, $i);

}

$return = array();

//查询

foreach ($days_arr as $val){

$min = $year.'-'.$month.'-'.$val.' 00:00:00';

$max = $year.'-'.$month.'-'.$val.' 23:59:59';

$sql = "select count(*) as total_num,sum(`total_price`) as amount from `orders` where `enterdate` >= {$min} and `enterdate` <= {$max}";

$return[] = mysqli_query($sql);

}

return $return;

这个sql简单,但是每次需要进行30次查询请,严重拖慢响应时间。

优化

如何使用一个sql直接查询出各天的数量总计呢?

此时需要利用 mysql 的 group by 分组统计。 代码如下:

$month = '04';

$year = '2017';

$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year); //当月最后一天

$min = $year.'-'.$month.'-01 00:00:00';

$max = $year.'-'.$month.'-'.$max_day.' 23:59:59';

$sql = "select t.enterdate,count(*) as total_num,sum(t.total_price) as amount (select date_format(enterdate,'%e') as enterdate,total_price from orders where enterdate between {$min} and {$max}) t group by t.enterdate order by t.enterdate";

$return = mysqli_query($sql);

如此,将30次查询减少到1次,响应时间会大大提高。

注意:

1.由于需查询当月所有数据,在数据量过大时,不宜采取本方法。

2.为避免当天没有数据而造成的数据缺失,在查询后,理应根据需求对数据进行处理。

相关推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专科计算机专业能报考南方电网,大学毕业想进国家电网?3大条件不可或缺!专科生也有报考机会...

国家电网是许多学子心目中理想的工作&#xff0c;每年的毕业季都有国家电网进入校园招聘。同时每年报考国家电网的人数大概在40万左右&#xff0c;今天&#xff0c;小编就来带大家盘点一下&#xff0c;报考国家电网需要满足哪些条件&#xff0c;方便大四学生对照要求&#xff0…

mysql 5.6 command line client闪退_MySQL 5.6 Command Line Client 点开闪退解决方法

先看下连接mysql本地库的2种方式。第一种运行cmd&#xff0c;键入mysql -uroot -p,如果提示mysql不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。就将mysql的安装路径添加的系统的环境变量中。连接成功的界面如下第二种方式&#xff1a;安装程序中搜索mysql找…

centos7安装mysql的rpm_Centos7 安装MySQL(rpm方式)

1 软件准备(我的网盘链接&#xff1a;https://pan.baidu.com/s/1c2AS6uG 密码&#xff1a;e1sj)mysql-5.6.29-1.el7.x86_64.rpm-bundle.zip Centos7 (我遇到的坑 &#xff1a;用cnetos6.5mini版的时候很难找到依赖&#xff0c;网上可靠的资料不多&#xff0c;结果安装了一大…

计算机重启很慢,电脑重启慢的原因

电脑重启慢的原因电脑开机速度慢是现在比较常见的一个问题&#xff0c;但是有时候重启也很慢&#xff0c;那么&#xff0c;电脑重启慢的原因是什么?下面跟小编一起来了解一下吧!电脑重启慢的原因1、遭到木马病毒入侵&#xff0c;系统遭到破坏和修改&#xff0c;导致程序运行缓…

两个图片叠加在一起css,css两张图片怎么叠加在一起?

css实现两张图片叠加在一起的方法&#xff1a;首先添加2个img标签&#xff1b;然后设置它们的css样式为position:absolute&#xff1b;最后设置其中一个img样式为left:120px即可看见效果。使用css把两个图片叠加&#xff0c;可以通过position定位属性设置两张图片的位置来实现叠…

css背景从左到右颜色渐变,CSS:linear-gradient()背景颜色渐变

background: linear-gradient(direction,color-stop1,color-stop2,...);direction&#xff1a;用角度值指定渐变的方向(或角度)&#xff1b;color-stop1,color-stop2,...&#xff1a;用于指定渐变的起止颜色ps&#xff1a;至少需要两种颜色1 background: -webkit-linear-gradie…

WordPress文章ajax,使用ajax在WordPress后台删除文章方法

今天wpmee小编分享使用ajax在WordPress后台删除文章方法&#xff0c;直接上代码&#xff0c;将下面的代码添加到当前启用的WordPress主题的functions.php里面。// 后台 文章列表 ajax删除文章add_action( admin_footer, dahuzi_custom_internal_javascript );function dahuzi_c…

mac os qt项目编译_【Qt开发】第一个Qt程序Hello World!

一&#xff1a;说在前头我的第一份工作是做生产工具&#xff0c;当时用的MFC&#xff0c;IDE是VC6.0&#xff0c;现在想想真是古董级别&#xff0c;10年至今&#xff0c;微软也一直没有对MFC进行升级&#xff0c;冥冥中感觉微软自己都放弃MFC了&#xff0c;市场上貌似MFC的岗位…

centos mysql 5.5.57_Centos MySQL 5.7安装、升级教程

MySQL 5.7安装、升级笔记分享&#xff1a;卸载当前的 MySQL查看当前 MySQL 版本&#xff1a;停止 MySQL 服务备份数据【数据不重要可以忽略】备份数据库&#xff0c;升级MySQL通常不会丢失数据&#xff0c;但保险起见&#xff0c;我们需要做这一步。输入命令&#xff1a;[rootc…

ug许可服务器在那个文件里,ug许可证位置在哪_ug许可证文件在哪的图文步骤

最近有朋友问小编ug许可证位置在哪的问题&#xff0c;ug安装后许可证在哪里呢&#xff1f;我们应该如何找到ug许可证文件夹的位置呢&#xff1f;相信很多朋友还不太明白。别着急&#xff0c;今天小编就针对ug许可证位置在哪的问题&#xff0c;以ug nx8.5为例&#xff0c;为大家…

如何登陆网页的back office_如何使用iPhone面容ID快速登陆应用或网页

我们总是会在手机中下载很多App&#xff0c;但是不一定都能够记住这些App的密码&#xff0c;即使就算记住了&#xff0c;想要使用某些应用时&#xff0c;不断需要输入密码也让人觉得焦虑。好在苹果在iOS 12中改进了密码自动填充功能&#xff0c;搭配您设备上先进的面容 ID 功能…

mysql 复杂的sql_mysql 一个复杂的sql

查询 物资明细&#xff1a;SELECT r.material_id,r.material_category,r.material_name,r.material_quality,r.standard,r.product_factory,r.material_type,r.measure_unit,(r.numr.num_sub) as num,(r.numr.num_sub)-num_sd-num_yd as current_js_numFROM-- 单独计算各个数值…

接口可以继承抽象类吗_Python接口类的多继承以及抽象类的单继承

一、接口类(面向对象开发的思想和规范)的多继承需求&#xff1a;定义一个tiger类&#xff1a;会走&#xff0c;会游定义一个hawk类&#xff1a;会走&#xff0c;会飞定义一个swan类&#xff1a;会走&#xff0c;会游&#xff0c;会飞(a)如果像以下代码的方式&#xff0c;则不能…

mysql查询注意_mysql中sql查询使用注意

1.注意DESC关键字仅适用于在它前面的列名(birth)&#xff1b;不影响species列的排序顺序。SELECT name, species, birth FROM petORDER BY species, birth DESC; ---desc只影响birth.先按照species升序列排序,species值相同的再按照birth降序排序2.日期计算MySQL提供了几个函数…

python线程安全的计数器_Python多线程同步Lock、RLock、Semaphore、Event实例

一、多线程同步由于CPython的python解释器在单线程模式下执行&#xff0c;所以导致python的多线程在很多的时候并不能很好地发挥多核cpu的资源。大部分情况都推荐使用多进程。python的多线程的同步与其他语言基本相同&#xff0c;主要包含&#xff1a;Lock & RLock &#x…

java地址传递_关于java中是地址传递还是值传递的测试

首先&#xff0c;我的结论是&#xff0c;如果是对对象进行 操作的话&#xff0c;传的是地址&#xff0c;如果是对基本数据类型进行操作的话&#xff0c;传的是值!下面&#xff0c;我再用一个小的实例来测试我的结论&#xff1a;class Person {int age;public void setAge(int a…

java 线程安全问题_java线程安全问题原因及解决办法

1.为什么会出现线程安全问题计算机系统资源分配的单位为进程&#xff0c;同一个进程中允许多个线程并发执行&#xff0c;并且多个线程会共享进程范围内的资源&#xff1a;例如内存地址。当多个线程并发访问同一个内存地址并且内存地址保存的值是可变的时候可能会发生线程安全问…

java里怎么存入数据并进行排序_Java数据结构之排序---插入排序

插入排序的基本介绍&#xff1a;插入排序是对想要排序的序列以插入的方式寻找该元素的适当的位置&#xff0c;从而达到排序的目的。插入排序的基本思想&#xff1a;把n个待排序的元素看成一个有序表和一个无序表&#xff0c;开始时&#xff0c;有序表只有一个元素(整个序列的第…

java ftp读取文件内容_java读取ftp中TXT文件的案例

最近在开发关于java读取ftp中TXT文件&#xff0c;其中有些坑踩了一下&#xff0c;再次做个记录1、读取文件时我会根据文件名称去生成数据库表&#xff0c;oracle数据库对于表名的长度是有限制的&#xff0c;最多30个字符2、对于多个文件的ftp的读取&#xff0c;每次获取文件后再…

java sql server 2016_SQL server 2016 安装步骤

1.进入安装中心&#xff1a;可以参考硬件和软件要求、可以看到一些说明文档2.选择全新安装模式继续安装3.输入产品秘钥&#xff1a;这里使用演示秘钥进行4.在协议中&#xff0c;点击同意&#xff0c;并点击下一步按钮&#xff0c;继续安装5.进入全局规则检查项&#xff0c;这里…