Sql сумма новых столбцов - PullRequest
0 голосов
/ 05 июня 2018

У меня есть часть запроса ниже, где я создал новые столбцы на основе условий:

select 
   sum(case when Overall_Time_Spent < 0 then 1 else 0 end) as Errors,
   sum(case when Overall_Time_Spent between 0 and 3 then 1 else 0 end) as _0_3_days,
   sum(case when Overall_Time_Spent = 4 then 1 else 0 end) as _4_days,
   sum(case when Overall_Time_Spent = 5 then 1 else 0 end) as _5_days,
   sum(case when Overall_Time_Spent between 6 and 8 then 1 else 0 end) as _6_8_days,
   sum(case when Overall_Time_Spent >= 9 then 1 else 0 end) as more_than_9_days,

   avg(case when Overall_Time_Spent < 0 then 100.0 else 0 end) as Errors_percent,
   avg(case when Overall_Time_Spent between 0 and 3 then 100.0 else 0 end) as _0_3_percent,
   avg(case when Overall_Time_Spent = 4 then 100.0 else 0 end) as _4_percent,
   avg(case when Overall_Time_Spent = 5 then 100.0 else 0 end) as _5_percent,
   avg(case when Overall_Time_Spent between 6 and 8 then 100.0 else 0 end) as _6_8_percent,
   avg(case when Overall_Time_Spent >= 9 then 100.0 else 0 end) as more_than_9_days_percent,

Как я могу добавить запрос в этот, где я могу добавить ДВА БОЛЬШЕ столбцов, которые дают мне суммувсех сумм и сумм всех avg

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Попробуйте использовать подзапрос:

SELECT a.*, (Errors + _0_3_days...) as Total FROM (
select 
   sum(case when Overall_Time_Spent < 0 then 1 else 0 end) as Errors,
   sum(case when Overall_Time_Spent between 0 and 3 then 1 else 0 end) as _0_3_days,
   sum(case when Overall_Time_Spent = 4 then 1 else 0 end) as _4_days,
   sum(case when Overall_Time_Spent = 5 then 1 else 0 end) as _5_days,
   sum(case when Overall_Time_Spent between 6 and 8 then 1 else 0 end) as _6_8_days,
   sum(case when Overall_Time_Spent >= 9 then 1 else 0 end) as more_than_9_days
) as a
0 голосов
/ 05 июня 2018

Выражения CASE, которые у вас есть, охватывают <0, между 0 и 8 и >=9, что составляет каждая возможность , при условии, что ваши данные int.Таким образом, все, что вам нужно добавить, это

COUNT(Overall_Time_Spent) AS DaysTotal

Если это не int, то ваши выражения CASE будут пропускать значения между 3 и 4, 4 и 5, 5 и 6 и 8 и 9, однако, COUNT будет включать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...