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…

计算机中丢失了ll是什么意思,丢失了ntoskrnl.exe和hal.ll

满意答案hal.dll丢失、损坏、找不到等情况的解决办法1.尝试使用windows光盘启动&#xff0c;按提示选择修复&#xff0c;再选择启动到故障恢复控制台&#xff0c;输入管理员口令&#xff0c;一部分用户安装时并没有输入管理员口令&#xff0c;可以直接按回车通过。当系统成功的…

执行计划 分析一条sql语句的效率 mysql_mysql的SQL语句执行计划分析:EXPLAIN

数据库最常见的操作就是查询了&#xff0c;我们经常要用"SELECT"语法对已有的表进行某种检索&#xff0c;但是在实际应用中&#xff0c;查询前我们并不知道该查询会如何运行、会使用多少时间、会涉及多少字段和记录&#xff0c;每次输入了SQL语句&#xff0c;点击运行…

计算机和单片机概述,微机与单片机概述课件.ppt

《微机与单片机概述课件.ppt》由会员分享&#xff0c;提供在线免费全文阅读可下载&#xff0c;此文档格式为ppt&#xff0c;更多相关《微机与单片机概述课件.ppt》文档请在天天文库搜索。1、1.微机与单片机概述1.1 微型计算机的特点和发展1.2 微机的分类与单片机1.3 微处理器、…

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

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

虚拟服务器的好处与坏处,常见服务器虚拟化的弊端主要是什么问题?

常见服务器虚拟化的弊端问题主要有以下几点&#xff1a;1、虚拟机蔓延&#xff1a;避免虚拟机蔓延一个常用的策略是为虚拟机分配有效期。临近有效期的虚拟机将会被打上标记&#xff0c;而且会给相关人员发送消息&#xff0c;要求批准保留该虚拟机。2、资源争用。在虚拟环境中&a…

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;导致程序运行缓…

ibm招mysql_IBM-ETP实训之MySql基本命令总结

MySql学习笔记SQL的三种表示DDL(create、drop、alter)--隐式提交、DQL(select)、DML(insert、delete、update)--自动提交、DCL(commit、rollback)MySql的一些常用语句&#xff1a;1、 show databases;显示所有存在的数据库2、 use 数据库名;选择数据库3、 show tables;显示所选…

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

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

mysql支持事务的存储引擎_MySQL基础(三)【MySQL事务与存储引擎】

3.1-数据库事务什么是事务一系列有序的数据库操作&#xff1a;要么全部成功要么全部回退到操作前的状态中间状态对其他连接不可见事务的基本操作&#xff1a;基本操作 说明start transaction 开始事务commit 提交(全部完成)rollback 回滚(回到初始状态)-- 开启一个事务start tr…

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的岗位…

vbs读取服务器上的txt文件,VBS读写txt文件常用方法

1、打开文件使用opentextfile方法set fs createobject(“scripting.filesystemobject”)set tsfs.opentextfile(“c:\1.txt”,1,true)注意这里需要填入文件的完整路径&#xff0c;后面一个参数为访问模式1为forreading2为forwriting8为appending第三个参数指定如果指定文件不存…

mysql的四层架构_分布式数据库服务器的四层架构

分布式数据库服务器的四层架构&#xff1a;访问层&#xff1a;接收访问信息并按负荷智能的分配给中转服务器&#xff0c;接受数据结果并返回客户端。中转层&#xff1a;接收访问服务器发来的数据访问指令&#xff0c;从总储存服务器寻找数据分布所在的储存服务器&#xff0c;发…

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-- 单独计算各个数值…