MySQL / PHP按日期范围生成值

时间:2014-10-26 19:49:20

标签: 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& 2014年10月25日,我需要它来对在该范围内找到的所有值求和并进行除法。

这是我当前的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 个答案:

答案 0 :(得分: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`