сжать результаты в 1 результат под определенным пределом - PullRequest
0 голосов
/ 19 марта 2019

Итак, у меня есть набор результатов, который имеет процент от общего числа в 1 столбце и имя в другом столбце.

Так например -

 Name | Percentage
 Jill | 12
 Sam  | 24
 Steve| 2
Jeff  | 3
Elvis | 59

Я пытаюсь сжать любой результат, который составляет менее 15% в строке,

так что мой результат будет

         Name | Percentage
 Everyone else| 17
         Sam  | 24
        Elvis | 59

Спасибо!

Ответы [ 3 ]

0 голосов
/ 19 марта 2019

Вы можете использовать APPLY:

SELECT tt.Name, SUM([Percentage]) AS [Percentage]
FROM table t CROSS APPLY
     ( VALUES (CASE WHEN [Percentage] < 15 
                    THEN 'Everyone else' 
                    ELSE Name 
               END) 
     ) tt(Name)
GROUP BY tt.Name;
0 голосов
/ 19 марта 2019

Для такого простого условия вы можете просто использовать CASE выражения:

select (case when percentage < 15 then 'Everyone else'
             else name
        end) as name,
       sum(percentage) as percentage
from t
group by (case when percentage < 15 then 'Everyone else'
               else name
          end)
order by sum(percentage) asc;
0 голосов
/ 19 марта 2019

Используйте выражение case в производной таблице (подзапрос), чтобы собрать вместе менее 15% людей. GROUP BY его результат:

select name, sum(Percentage)
from
(
    select case when Percentage > 15 then name
                else 'Everyone else'
           end as name,
           Percentage
    from tablename
) dt
group by name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...