【发布时间】:2016-06-02 05:14:55
【问题描述】:
我通过选择过去六周内完成评估的所有员工数据来编辑查询。从逻辑上讲,如果它在两周内完成了评估,则每个员工应该两次,但此查询显示单个记录。
select
AssessmentEmployee.
EmployeeName,
AVG(AssessmentListing.AssessmentScore),
DATE_FORMAT((STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p')) , '%Y-%m-%v') as _month
from AssessmentEmployee
LEFT JOIN AssessmentListing
ON AssessmentEmployee.AssessmentID=AssessmentListing.AssessmentID
WHERE (STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >= DATE_FORMAT(NOW() - INTERVAL 6 Week, '%Y' ))
group by AssessmentEmployee.EmployeeName
我正在使用下表。
AssessmentEmployee
ID
AssessmentID
EmployeeName
其他表是AssessmentListing
ID
AssessmentID
AssessmentSubmittedDateTime
AssessmentScore
我想获取在 Last sex week 中得分/完成评估的员工及其平均得分。
AssessmentListing 数据列示例
ID AssessmentID AssessmentSubmittedDatetime AssessmentScore
1 040416024720 04-Apr-2016 02:48 PM 50
【问题讨论】:
-
你需要按
week number和employee name分组。 -
当您说
group by AssessmentEmployee.EmployeeName时,它要求将EmployeeName的每个值的所有数据汇总到一行中。所以当然你只会得到一排(不是你期望的两排)。 -
@Turophile 我想说亚当和杰克逊在过去两周内已经完成了所以它应该同时显示,并且如果过去六周中的任何一周没有记录比前几周它应该显示不需要其他几周
-
@1000111 我已经添加了机器人,但它不应该只显示过去六周,而是说最后六周是 22、21、20、19、18、17,所以假设没有数据如果是 21,那么它也会选择 16,如果不能不显示,它应该只显示最后六个
-
AssessmentSubmittedDateTime的数据类型是什么?