手机版

PHP MySQL实现一段时间内每日数据的统计优化

时间:2021-09-01 来源:互联网 编辑:宝哥软件园 浏览:

本文通过一个例子来说明PHP MySQL如何优化一段时间内的日常数据统计。分享给大家参考,如下:

在互联网项目中,数据分析至关重要。通常我们会统计某段时间内的日总数据的变化趋势,调整营销策略。让我们看看下面的案例。

情况

在电子商务平台中,通常有一个订单表来记录所有的订单信息。现在我们需要统计某个月的日订单数和销售金额数据,绘制如下统计图进行数据分析。

订单表数据结构如下:

order_id order_sn total_price输入日期25396 a4e 610 e 250 C2 d 378 D7 EC 94179 e 14617 f 2306.00 2017-04-01 17:2:26 25397 EAD 217 c 0533455 eecdde 39659 abcda E9 17.90 2017-04-01 223:15333333查询某月每天的奇数时,总金额应该怎么做?

常规方法

最容易想到的方法是使用php函数cal_days_in_month()来获取当月的天数,然后构造一个包含当月所有天数的数组,然后在一个循环中查询每天的总数来构造一个新的数组。

代码如下:

$ 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。'-'.一个月。'-'.$瓦尔。' 00336000:00';$max=$year。'-'.一个月。'-'.$瓦尔。' 23:59:59';$sql='选择count(*)作为total_num,sum(`total_price `)作为来自` orders '的金额,其中` enterdate`={$min}和` enter date `={ $ max } ';$ return[]=MySQL _ query($ SQL);} return $ return这个sql很简单,但是一次需要查询30次,这严重降低了响应时间。

最佳化

如何用一个sql直接查询每天的总量?

此时,需要使用mysql的date_format函数找出子查询中当月的所有订单,使用date_format函数将enterdate转换为days,然后按天对统计数据进行分组。代码如下:

$ month=' 04$ year=' 2017$ max _ day=CAL _ days _ in _ month(CAL _ GREGORIAN,$month,$ year);//$ min=$ year。'-'.一个月。-01 00:00:00 '当月最后一天;$max=$year。'-'.一个月。'-'.$max_day。' 23:59:59';$sql='选择t.enterdate,计数(*)作为total_num,sum(t.total_price)作为金额(选择date_format(enterdate,' %e ')作为enterdate,total_price来自输入日期在{$min}和{$max}之间的订单t group by t . enter date order by t . enter date ';$ return=MySQL _ query($ SQL);这样,通过将30个查询减少到一个,响应时间将大大缩短。

注意:

1.因为当月的所有数据都需要查询,所以当数据量过大时,不应该采用这种方法。

2.为避免当天没有数据造成数据缺失,查询后,数据要按要求进行处理。

更多对PHP相关内容感兴趣的读者可以查看本网站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php常见数据库操作技巧汇总》、0103010

希望本文对PHP编程有所帮助。

版权声明:PHP MySQL实现一段时间内每日数据的统计优化是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。