我需要转换数据,因此它会进入我的BI软件。我在互联网上找到了以下查询来计算净推荐分数(NPS),但是存在问题 - 它会计算所有数据并忽略WHERE语句,我会尝试指定年份和月份。这意味着它需要所有年份的所有行并输出它们的计算结果。
.as-console-wrapper { max-height: 100% !important; top: 0; }
注意:Net Promoter System是一项客户体验调查,询问的评分范围为0到10(含)。计算方法如下: ((回复10或9的人数)/所有回复 - (回复0-6的人数)/所有回复)* 100
答案 0 :(得分:0)
一些事情。
首先,使用
WHERE Survey_Response_Created_Date >= '2017-10-01'
AND Survey_Response_Created_Date < '2017-11-01'
获取2017年10月的所有回复。这可以利用您列上的索引。
其次,为了确保您了解您的数据,请先尝试制作详细子查询,然后对其进行总结。例如,首先获取详细信息(IF比CASE更容易使用):
SELECT Survey_Response_Created_Date,
NPS_Deployment_Type,
IF(NPSRating BETWEEN 0 AND 10, 1,0) AS total,
IF(NPSRating BETWEEN 9 AND 10, 1,0) AS positive,
IF(NPSRating BETWEEN 0 AND 6, 1,0) AS negative
FROM table
然后在外部查询中总结它们
SELECT (100 * SUM(positive) - SUM(negative))/SUM(total) AS nps,
SUM(total) AS responses,
LAST_DAY(Survey_Response_Created_Date) month_ending,
NPS_Deployment_Type
FROM (
SELECT Survey_Response_Created_Date,
NPS_Deployment_Type,
IF(NPSRating BETWEEN 0 AND 10, 1,0) AS total,
IF(NPSRating BETWEEN 9 AND 10, 1,0) AS positive,
IF(NPSRating BETWEEN 0 AND 6, 1,0) AS negative
FROM table
) detail
WHERE Survey_Response_Created_Date >= '2017-10-01'
AND Survey_Response_Created_Date < '2017-11-01'
GROUP BY LAST_DAY(Survey_Response_Created_Date, NPS_Deployment_Type
这样做的好处是,在您尝试汇总之前,您可以轻松验证您的个人调查回复。