2014-10-26 38 views
0

我一直在閱讀大量關於PHP中的交叉表報告(數據透視表),我一直在試圖完成一個報告,但我被卡住了。MySQL/PHP根據日期範圍生成值

我有一個數據庫表report_date,employee_name,employee_id,leader_name,leader_id,employee_dept,stat1,stat2,stat3,stat4,stat5,stat6。

我想要做的是能夠查詢並返回基於所選report_date範圍的值的總和和劃分。因此,如果我選擇在10/01/2014 & 10/25/2014之間查詢數據,我需要它對所有在該範圍內找到的值求和。

這是我當前的SQL查詢。

Select 
report_date, 
employee_name, 
employee_id, 
leader_name, 
leader_id, 
employee_dept, 
stat1, 
stat2, 
stat3, 
stat4, 
stat5, 
stat6, 
SUM(stat2)/SUM(stat1) AS `Result Name2`, 
SUM(stat3)/SUM(stat1) AS `Result Name3`, 
SUM(stat4)/SUM(stat1) AS `Result Name4`, 
SUM(stat5)/SUM(stat1) AS `Result Name5`, 
SUM(stat6)/SUM(stat1) AS `Result Name6` 
FROM daily_records 
GROUP BY report_date, employee_id 

可能是過分的要求,但我怎麼用這個在PHP從所選REPORT_DATE範圍查詢的總額是多少?

編輯補充樣本數據:

數據庫表中的數據

report_date employee_id employee_name employee_dept STAT1 STAT2 STAT3 STAT4 STAT5 STAT6 leader_name leader_id 
9/11/2014 1983122  emp_name1 ARK  17 7941 191 5 8137 2 Name  1001 
9/11/2014 1983130  emp_name2 ARK  11 5067 516 3 5586 1 Name  1001 
9/11/2014 1983138  emp_name3 ARK  3 184 16 4 204 1 Name  1001 
9/11/2014 1983138  emp_name4 ARK  12 2576 7 6 2589 2 Name  1002 
9/11/2014 1983138  emp_name5 ARK  21 9069 400 139 9608 1 Name  1002 
9/11/2014 1983328  emp_name6 ARK  69 17929 1893 1096 20918 1 Name  1002 
9/11/2014 1983349  emp_name7 ARK  12 2259 17 112 2388 2 Name  1002 
9/11/2014 1983349  emp_name8 ARK  23 8194 880 211 9285 2 Name  1003 
9/11/2014 1983829  emp_name9 ARK  81 16175 1431 311 17917 2 Name  1003 
9/11/2014 1983888  emp_name10 ARK  7 1442 22 9 1473 1 Name  1003 
9/12/2014 1983122  emp_name1 ARK  35 6823 774 22 7619 1 Name  1001 
9/12/2014 1983642  emp_name2 ARK  80 18268 1439 135 19842 2 Name  1001 
9/12/2014 1983643  emp_name3 ARK  55 20321 962 466 21749 1 Name  1001 
9/12/2014 1983677  emp_name4 ARK  72 16379 1157 418 17954 2 Name  1002 
9/12/2014 1983682  emp_name5 ARK  17 5017 419 425 5861 1 Name  1002 
9/12/2014 1983978  emp_name6 ARK  48 9898 228 94 10220 1 Name  1002 

(我試圖將表粘貼有正確的格式,但我做不到)

統計2至6應除以stat 1得到每個字段的結果。 例如:stat2/stat1 AS Result Name

讓我知道你是否需要別的東西。

在此先感謝

+1

請根據示例數據提供一些示例數據和準確結果 – peterm 2014-10-26 20:24:05

+0

我從SQL表中添加了一些示例數據。 2天的價值數據。對不起,我無法更好地格式化表格。 – BlueSun3k1 2014-10-26 20:57:21

+0

在mysql中查看日期,然後回到我們。 – Strawberry 2014-10-26 23:52:44

回答

1

首先,你應該使用DATE類型的日期。追加查詢日期條件後,

Select 
report_date, 
employee_name, 
employee_id, 
leader_name, 
leader_id, 
employee_dept, 
stat1, 
stat2, 
stat3, 
stat4, 
stat5, 
stat6, 
SUM(stat2)/SUM(stat1) AS `Result Name2`, 
SUM(stat3)/SUM(stat1) AS `Result Name3`, 
SUM(stat4)/SUM(stat1) AS `Result Name4`, 
SUM(stat5)/SUM(stat1) AS `Result Name5`, 
SUM(stat6)/SUM(stat1) AS `Result Name6` 
FROM daily_records 
WHERE report_date >= "2014-10-01" 
OR report_date <= "2014-10-25" 
GROUP BY employee_id`