2014-10-26 39 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`