【发布时间】:2020-03-05 20:32:27
【问题描述】:
我目前正在运行一个查询,以计算代理的平均调查分数。我们使用 LastDayOfTheQuarter 和 180 天前的日期范围来计算这些分数。我在本季度遇到了一个问题。
我的一位代理人在 2020 年没有收到任何调查,这导致查询无法提取当前的 lastdayofquarter 和 180 天的结果。
我正在使用的代码:
SELECT
Agent,
U.Position,
U.BranchDescription,
(ADDDATE(LastDayOfQuarter, -180)) AS MinDate,
(LastDayOfQuarter) AS MaxDate,
COUNT(DISTINCT Response ID) as SurveyCount,
AVG(CASE WHEN Question ID = Q1_2 THEN Answer Value END) AS EngagedScore,
AVG(CASE WHEN Question ID = Q1_3 THEN Answer Value END) AS KnowledgableScore,
AVG(CASE WHEN Question ID = Q1_6 THEN Answer Value END) AS ValuedScore
FROM qualtrics_responses
LEFT JOIN date D
ON (D.`Date`) = (DATE(`End Date`))
LEFT JOIN `users` U
ON U.`UserID` = `Agent ID`
WHERE `Agent` IS NOT NULL
AND DATE(`End Date`) <= (`LastDayOfQuarter`)
AND DATE(`End Date`) >= (ADDDATE(`LastDayOfQuarter`, -180))
GROUP BY `Agent`, (ADDDATE(`LastDayOfQuarter`, -180))
我知道问题出在我加入日期的方式上,而且由于他在本年度没有结果,因此加入日期的结束日期没有抓住所需的日期范围。我似乎想不出任何替代方案。任何帮助表示赞赏。
【问题讨论】:
-
哪个dbms???如果有人给你解决错误的 dbms 是没用的。
-
学会正确使用
GROUP BY。为什么U.Position、U.BranchDescription、LastDayOfQuarter不在GROUP BY中? -
@Eric:这闻起来像 MySQL/MariaDB
-
date表是什么样的?