SQL: как рассчитать процент с помощью SUMS () - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь рассчитать проценты, используя SUM () для сбора итогов.

CONVERT(decimal(10,2), SUM(cola)/(SUM(cola)+SUM(colb)))

Я проверил, и SUM (кола) = 3 и SUM (колб) = 2; Так что я ожидал, что он будет рассчитываться как ...

3/5 = 0,6; Так что я надеялся вернуться, 0,60,

Вот полный запрос:

    SELECT CASE WHEN this < 0 THEN '-'
                ELSE '+' END AS 'Col1',
                SUM(cola) as 'this', SUM(colb) as 'that',
                CONVERT(decimal(10,2), SUM(cola)/(SUM(cola)+SUM(colb)) as 'PCT'
     FROM Table1
    WHERE colc = 'Condition'
 GROUP BY CASE WHEN this < 0 THEN '-'
               ELSE '+' END

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Вы делаете Целочисленное деление .

Вам нужен хотя бы один операнд для типа с плавающей точкой, если вы хотите получить результат с плавающей точкой.

0 голосов
/ 05 сентября 2011

Спасибо @Oded, (забыл преобразовать целые числа в десятичные) Итак, это то, что я изменил ...

SELECT CASE WHEN this < 0 THEN '-' 
                ELSE '+' END AS 'Col1', 
                SUM(cola) as 'this', SUM(colb) as 'that', 
                CONVERT(decimal(10,2), SUM(cola)/(CONVERT(decimal(10,2),
                SUM(cola))+CONVERT(decimal(10,2), SUM(colb))) as 'PCT' 
     FROM Table1 
    WHERE colc = 'Condition' 
 GROUP BY CASE WHEN this < 0 THEN '-' 
               ELSE '+' END 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...