首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL/PHP按日期范围生成值

MySQL/PHP按日期范围生成值
EN

Stack Overflow用户
提问于 2014-10-27 03:49:20
回答 1查看 86关注 0票数 0

我已经阅读了很多PHP中的交叉表报告(透视表),我一直在尝试完成一个报告,但我被卡住了。

我有一个包含report_date、employee_name、employee_id、leader_name、leader_id、employee_dept、stat1、stat2、stat3、stat4、stat5、stat6的DB表。

我想要做的是能够根据选择的report_date范围查询和返回值的总和和除法。因此,如果我选择查询2014年10月1日和2014年10月25日之间的数据,我需要它对该范围内找到的所有值求和并除以。

这是我当前的SQL查询。

代码语言:javascript
运行
复制
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范围内的总数呢?

编辑以添加示例数据:

DB表数据

代码语言:javascript
运行
复制
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应除以统计数据1,以得到每个字段的结果。例如: stat2 / stat1 AS Result Name

如果你还需要什么,请告诉我。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-10-27 05:02:09

首先,您应该使用DATE类型作为日期。在添加查询日期条件后;

代码语言:javascript
运行
复制
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`
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26577195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档