本文實(shí)例講述了PHP實(shí)現(xiàn)的統(tǒng)計(jì)數(shù)據(jù)功能。分享給大家供大家參考,具體如下:
統(tǒng)計(jì),就是把基本的數(shù)據(jù),整合起來。
用到sql的,有g(shù)roup by 功能,count功能,order by功能等等。
sql將收集的數(shù)據(jù),進(jìn)行統(tǒng)計(jì)分析。
一般情況下,sql處理后得到的數(shù)據(jù),還要通過php的邏輯來進(jìn)行整理。
以一定的格式,展示到前臺。(推薦學(xué)習(xí):PHP編程從入門到精通)
一般都是以數(shù)組的方式展示,這也是數(shù)據(jù)結(jié)構(gòu)的概念。
看這張圖片,基本想想結(jié)構(gòu)大概為
{上線數(shù),出單總數(shù),核過總數(shù),總?cè)司?,總核率,{(坐席人1,工號1,出單數(shù)1,發(fā)貨數(shù)1,核單率1),(坐席人2,工號2,出單數(shù)2,發(fā)貨數(shù)2,核單率2)}}
如果用php展示成上面的結(jié)構(gòu)的話,就很好處理了。
首先通過sql獲取初次處理的數(shù)據(jù),
別小看這初次處理的數(shù)據(jù),處理的好,會非常的便捷。
SELECT a.user,count(order_id) as subcount,b.passcount,c.full_name from vicidial_order a LEFT JOIN (SELECT user,count(order_id) as passcount from vicidial_order where time > UNIX_TIMESTAMP('2015-11-7') and user_group = 'TeamOne' and verifysta = 'Y' GROUP BY user ) b on a.user = b.user LEFT JOIN vicidial_users c on a.user = c.user where time > UNIX_TIMESTAMP('2015-11-7') and a.user_group = 'TeamOne' GROUP BY a.user ;
sql思路,歸類訂單表,以user來進(jìn)行歸類。
獲取每個(gè)人,當(dāng)天的訂單提交總數(shù)count()。
還要獲取每個(gè)人,訂單通過審核的總數(shù),通過where篩選。
然后關(guān)聯(lián)查詢其他相關(guān)數(shù)據(jù)。
有了這些基本數(shù)據(jù),其他的相關(guān)數(shù)據(jù)都能出來了。
通過php來處理獲取,其中變量命名要清晰,這樣也有利于閱讀代碼。
$select_sql = "SELECT a.user,count(order_id) as subcount,b.passcount,c.full_name from vicidial_order a LEFT JOIN (SELECT user,count(order_id) as passcount from vicidial_order where time > UNIX_TIMESTAMP('".$today."') and user_group = '".$user_group."' and verifysta = 'Y' GROUP BY user ) b on a.user = b.user LEFT JOIN vicidial_users c on a.user = c.user where time > UNIX_TIMESTAMP('".$today."') and a.user_group = '".$user_group."' GROUP BY a.user "; $rows = mysqli_query( $db_conn, $select_sql ); $row_counts_list = mysqli_num_rows( $rows ); if ( $row_counts_list != 0 ) { $i = 0; while($rs = mysqli_fetch_assoc( $rows )) // mysqli_fetch_assoc 獲取鍵值數(shù)據(jù) mysqli_fetch_field 獲取一條數(shù)據(jù) mysqli_fetch_fields 獲取多組數(shù)據(jù) mysqli_fetch_row { $outData['list'][$i]['user'] = $rs['user']; $outData['list'][$i]['full_name'] = $rs['full_name']; $outData['list'][$i]['subcount'] = $rs['subcount']; $outData['list'][$i]['passcount'] = $rs['passcount']; $outData['list'][$i]['passrate'] = round(($rs['passcount']/$rs['subcount'])*100)."%"; $outData['all_subcount'] += $rs['subcount']; $outData['all_passcount'] += $rs['passcount']; $i++; } $outData['all_passrate'] = round(($outData['all_passcount']/$outData['all_subcount'])*100)."%"; $outData['online_count'] = $row_counts_list; $outData['average_subcount'] = round($outData['all_subcount']/$outData['online_count'],1); }