2017-09-06 55 views
0

以前我使用Ajax繪製一個谷歌圖表(餅圖),圖表可以顯示,因爲它只涉及2列。如何使SQL查詢獲得特定列的總和?

現在,我想畫一個這樣的柱狀圖。

column chart

這是我的SQL查詢:

$sql = "Select count(application_id) as count, application_status, category_group from mdl_local_jobs_application 
inner join mdl_local_jobs_job on mdl_local_jobs_application.application_jobid = mdl_local_jobs_job.job_id 
left join mdl_local_jobs_category on mdl_local_jobs_job.job_categoryid = mdl_local_jobs_category.category_id 
left join mdl_cohort_members on mdl_local_jobs_application.application_applicantid = mdl_cohort_members.userid 
left join mdl_local_cohortrole on mdl_cohort_members.cohortid = mdl_local_cohortrole.cohortid 
left join mdl_role on mdl_local_cohortrole.roleid = mdl_role.id where shortname = 'graduates' 
group by application_status, category_group"; 

查詢被編碼成JSON輸出使用此:

$result_rows = mysql_num_rows($query); 
$row_num = 0; 

//loop fetching the query into json format 
while ($result = mysql_fetch_array($query)) 
{ 
$row_num++; 
if ($row_num == $result_rows){ 
    echo "{\"c\":[{\"v\":\"" . $result['category_group'] . "\",\"f\":null},{\"v\":\"" . $result['application_status'] . "\",\"f\":null},{\"v\":" . $result['count'] . ",\"f\":null}]},"; 
} else { 
    echo "{\"c\":[{\"v\":\"" . $result['category_group'] . "\",\"f\":null},{\"v\":\"" . $result['application_status'] . "\",\"f\":null},{\"v\":" . $result['count'] . ",\"f\":null}]},"; 
} 
} 


echo " ] }"; 

這是輸出:

{ "cols": [ {"id":"","label":"CATEOGRY","pattern":"","type":"string"}, {"id":"","label":"CATEOGRY","pattern":"","type":"number"}, {"id":"","label":"TOTAL","pattern":"","type":"number"} ], "rows": [ {"c":[{"v":"Accounting/Finance","f":null},{"v":"0","f":null},{"v":2,"f":null}]},{"c":[{"v":"Engineering","f":null},{"v":"0","f":null},{"v":1,"f":null}]}, ] } 

但是,圖表顯示不正確,因爲應用程序狀態的值不是數字。我在其他解決方案上閱讀,以獲得sql函數中的sum函數的結果,但我不知道該怎麼做。

我的問題:我要怎麼做SQL查詢來獲取的每個應用程序的狀態總計數(0,1,2 - 狀態類型)

我的預期輸出是這樣的:

{ "cols": [ {"id":"","label":"CATEOGRY","pattern":"","type":"string"}, {"id":"","label":"CATEOGRY","pattern":"","type":"number"}, {"id":"","label":"TOTAL","pattern":"","type":"number"} ], "rows": [ {"c":[{"v":"Accounting/Finance","f":null},{"v":4,"f":null},{"v":2,"f":null}]},{"c":[{"v":"Engineering","f":null},{"v":7,"f":null},{"v":1,"f":null}]}, ] } 

不同之處在於第二個數組值,我希望通過使SQL Query(使用sum函數)獲得0狀態,1狀態和2狀態的每個狀態的計算總和。

{"c":[{"v":"Accounting/Finance","f":null},{"v":4,"f":null},{"v":2,"f":null}]}, 

如果我有這樣的查詢(在聲明的變化,我只能得到的狀態數「0」而已。我怎麼想添加在同一查詢另一個WHERE語句得到的其他狀態計數

$sql = "Select count(application_id) as count, category_group from mdl_local_jobs_application 
inner join mdl_local_jobs_job on mdl_local_jobs_application.application_jobid = mdl_local_jobs_job.job_id 
left join mdl_local_jobs_category on mdl_local_jobs_job.job_categoryid = mdl_local_jobs_category.category_id 
left join mdl_cohort_members on mdl_local_jobs_application.application_applicantid = mdl_cohort_members.userid 
left join mdl_local_cohortrole on mdl_cohort_members.cohortid = mdl_local_cohortrole.cohortid 
left join mdl_role on mdl_local_cohortrole.roleid = mdl_role.id where shortname = 'graduates' and application_status = 0 
group by category_group"; 
+0

你能添加預期的輸出嗎?我不能得到你的問題 – Alex

+0

你不用'count'來得到它嗎? – Oleg

+0

爲了您的理解,我已經編輯了我的問題。 @Oleg,count是每個類別的總應用程序,但它重複狀態「0」.--> {「v」:「Accounting/Finance」,「f」:null},{「v」:「0 「 」F「:空},{ 」v「:2, 」F「:空}]},{ 」C「:[{ 」v「: 」技術「, 」F「:空},{」 v 「:」0「,」f「:null},{」v「:1,」f「:null}]} – joun

回答

0

我想這個SQL查詢,狀態爲 「1」 和狀態 「2」:

$sql = "Select count(application_id) as count, sum(case when application_status = 0 then 1 else 0 end) PendingCount, sum(case when application_status = 1 then 1 else 0 end) RejectedCount, sum(case when application_status = 2 then 1 else 0 end)SuccessCount, category_group from mdl_local_jobs_application 
inner join mdl_local_jobs_job on mdl_local_jobs_application.application_jobid = mdl_local_jobs_job.job_id 
left join mdl_local_jobs_category on mdl_local_jobs_job.job_categoryid = mdl_local_jobs_category.category_id 
left join mdl_cohort_members on mdl_local_jobs_application.application_applicantid = mdl_cohort_members.userid 
left join mdl_local_cohortrole on mdl_cohort_members.cohortid = mdl_local_cohortrole.cohortid 
left join mdl_role on mdl_local_cohortrole.roleid = mdl_role.id where shortname = 'graduates' 
group by category_group"; 

這是輸出:

{ "cols": [ {"id":"","label":"CATEOGRY","pattern":"","type":"string"}, {"id":"","label":"PENDING","pattern":"","type":"number"}, {"id":"","label":"REJECTED","pattern":"","type":"number"}, {"id":"","label":"SUCCESS","pattern":"","type":"number"}, {"id":"","label":"TOTAL","pattern":"","type":"number"} ], "rows": [ {"c":[{"v":"Accounting/Finance","f":null},{"v":2,"f":null},{"v":0,"f":null}, {"v":0,"f":null},{"v":2,"f":null}]},{"c":[{"v":"Engineering","f":null},{"v":1,"f":null},{"v":0,"f":null}, {"v":0,"f":null},{"v":1,"f":null}]}, ] } 

圖表可以根據狀態類型出現..

不管怎麼說,謝謝@Alex,@Oleg的評論和分享讓我離開的問題。我很抱歉讓你對我的問題感到困惑。