Я пытаюсь написать запрос, который дает мне процент (например, что-то вроде 0,885, например) путем деления 2 агрегированных чисел, которые я выбрал с помощью SUM. Но мои результаты выходят как 0.0 вместо правильного числа. Так что для справки, начиная с 2 запросов, у меня есть:
SELECT SUM(CASE WHEN Status_ID = 1 AND State_ID = 14 THEN 1 ELSE 0 END)
FROM SomeTable
Что дает 158. А:
SELECT SUM(CASE WHEN State_ID = 14 THEN 1 ELSE 0 END)
FROM SomeTable
Выход 203.
Теперь, если бы я сделал именно это:
SELECT SUM(CASE WHEN Status_ID = 1 AND State_ID = 14 THEN 1 ELSE 0 END)/SUM(CASE WHEN State_ID = 14 THEN 1 ELSE 0 END)
FROM SomeTable
Я бы получил 0, потому что все используется как целые числа. Итак, я попробовал это:
SELECT CAST(SUM(CASE WHEN Status_ID = 1 AND State_ID = 14 THEN 1 ELSE 0 END)/SUM(CASE WHEN State_ID = 14 THEN 1 ELSE 0 END) AS DECIMAL(3,1))
FROM SomeTable
Но мой результат - 0.0. И это, очевидно, не то, что я хотел бы. Я хотел бы получить .778
Я думаю, что мне нужно приводить числа отдельно, но я попробовал это и получил исключение арифметического переполнения. Кто-нибудь видит, что я могу делать по-другому?
Я использую SQL Server 2005. Большое спасибо.