Я использую SQL Server 2000. Я пытаюсь вычислить Net Promoter Score или NPS на основе приведенной ниже формулеКак рассчитать значения для трех столбцов для данной формулы?
Формула: (Promoters - Detractors)/Total Questions
- Scores 9 - 10 считаются промоутеров ,
- Оценки 0 - 6 считаются недоброжелателями.
- Оценки 7 - 8 считаются нейтральными.
У меня есть следующие данные:
Time Q1 Q2 Q3
----------- ------ ------ ------
2012-03-14 7 7 5
2012-03-15 3 2 5
2012-03-15 7 NA 2
2012-03-15 9 10 NULL
2012-03-15 8 4 4
2012-03-15 NA 6 4
2012-03-16 1 7 4
2012-03-16 NULL 0 5
2012-03-17 9 9 2
2012-03-19 0 0 1
2012-03-19 8 5 4
2012-03-19 1 0 3
Человек, который первоначально написал базу данных хранятся NULL
значения в качестве заготовок или NA enter code here
в формате NVARCHAR (только бог знает почему ..) так, чтобы запрос, с которым я играю, теперь использует ISNUMERIC и im пытается не подсчитывать пустые значения или значения NA.
Мой запрос, который не работает должным образом выглядит следующим образом:
SELECT CAST(SUM(CASE WHEN ISNUMERIC([Q1]) != 1 THEN 0
WHEN CAST([Q1] AS int) >= 9 THEN 1
WHEN CAST([Q1] AS int) <= 6 THEN -1
ELSE 0 END)
+ SUM(CASE WHEN ISNUMERIC([Q2]) != 1 THEN 0
WHEN CAST([Q2] AS int) >= 9 THEN 1
WHEN CAST([Q2] AS int) <= 6 THEN -1
ELSE 0 END)
+ SUM(CASE WHEN ISNUMERIC([Q3]) != 1 THEN 0
WHEN CAST([Q3] AS int) >= 9 THEN 1
WHEN CAST([Q3] AS int) <= 6 THEN -1
ELSE 0 END)
AS FLOAT)
/(SUM(CASE WHEN ISNUMERIC([Q1]) != 1 THEN 0
ELSE 1 END)
+ SUM(CASE WHEN ISNUMERIC([Q2]) != 1 THEN 0
ELSE 1 END)
+ SUM(CASE WHEN ISNUMERIC([Q3]) != 1 THEN 0
ELSE 1 END)
) as [NPS]
FROM [nps]
Может кто-то мне точку в правильном направлении? Спасибо!
@Brad - В этом ответе, если в поле есть '' NA'' или 'NULL', оно считается как' 0'. означает, что он считается хулителем. По описанию вопросов ... 36 полей, 4 являются «NA» или «NULL», и их следует игнорировать => 4 промоутера, 22 хулигана, 6 нейтральных, 32 всего => (4-22)/32 => -0.5625, а не -0.6111, как в этом ответе. * [Это может быть исправлено с 'WHERE qn <> 'NA'' в трех подзапросах. Но общая обработка' <> «NA» плюс «ISNUMERIC()» плюс «CAST()», похоже, больше процессорной обработки, чем это необходимо.] * – MatBailie