我使用SQL Server 2000中我試圖根據以下公式如何計算給定公式的三列數值?
公式計算淨推薦值或NPS:(Promoters - Detractors)/Total Questions
- 比分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
值在NVARCHAR格式空白或NA enter code here
的人(只有上帝知道爲什麼..),所以查詢我正在玩現在使用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()'似乎是CPU處理的必要條件。] * – MatBailie