這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何在PHP中MySQL對一段時間內(nèi)每天的數(shù)據(jù)進行統(tǒng)計,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

代碼如下:
$month = '04';
$year = '2017';
$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year); //當(dāng)月最后一天
//構(gòu)造每天的數(shù)組
$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次查詢請,嚴重拖慢響應(yīng)時間。
優(yōu)化
如何使用一個sql直接查詢出各天的數(shù)量總計呢?
此時需要利用 mysql 的date_format 函數(shù),在子查詢中先查出當(dāng)月所有訂單,并將 enterdate 用 date_format 函數(shù)轉(zhuǎn)換為 天 ,然后按天group by 分組統(tǒng)計。 代碼如下:
$month = '04';
$year = '2017';
$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year); //當(dāng)月最后一天
$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次,響應(yīng)時間會大大提高。
注意:
1.由于需查詢當(dāng)月所有數(shù)據(jù),在數(shù)據(jù)量過大時,不宜采取本方法。
2.為避免當(dāng)天沒有數(shù)據(jù)而造成的數(shù)據(jù)缺失,在查詢后,理應(yīng)根據(jù)需求對數(shù)據(jù)進行處理。
上述就是小編為大家分享的如何在PHP中MySQL對一段時間內(nèi)每天的數(shù)據(jù)進行統(tǒng)計了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:如何在PHP中MySQL對一段時間內(nèi)每天的數(shù)據(jù)進行統(tǒng)計-創(chuàng)新互聯(lián)
本文路徑:http://www.jbt999.com/article12/djjhgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、品牌網(wǎng)站設(shè)計、App設(shè)計、Google、網(wǎng)站改版、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容