Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Server - Using Sum of Count

I am using SQL Server. The Formula I need to use is (Good-Bad)/Total_Responses. A Good is when the value is >=9 and a Bad is <=6.

The Data I have is:

DATE        Q1  Q2
2012-03-04   9   9
2012-03-04   8   8
2012-03-04   7   9
2012-03-04   4  NA
2012-03-04  10  10
2012-03-04   8   3
2012-03-04   3   4
2012-03-04   2   6
2012-03-04   6   8
2012-03-04  NA   6

I know I am going to have to use a "CASE WHEN ISNUMERIC(Q1)=1" to make sure it does not use the NA values (They are stored as Nvarchar)

So the formula would end up being (5-8)/18=-0.16666 So overall I am trying to get the data to look like:

DATE        Promotor_Score
2012-03-04        -0.16666

Thank You!

like image 565
Brad Avatar asked Jul 11 '26 00:07

Brad


1 Answers

Does this do the trick?

SELECT  Date,
        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)) AS float)
        / (SUM(CASE WHEN ISNUMERIC(Q1) != 1 THEN 0
                   ELSE 1 END)
        + SUM(CASE WHEN ISNUMERIC(Q2) != 1 THEN 0
                   ELSE 1 END))
FROM    Questions
GROUP BY Date

Or if 'NA' is the only non-numeric value, test for it explicitly.

like image 105
David M Avatar answered Jul 13 '26 14:07

David M



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!