получить верхние значения в select

#sql

#sql

Вопрос:

У меня есть следующая упорядоченная таблица:

 types        count
soft         7
lite soft    5
middle soft  4
hard soft    3
other        2
  

Мне нужно выбрать верхние значения, сумма которых равна 15 (в моем случае 7 5 4 > 15) и объединить элементы, которые остались в других:
результат должен быть:

 types        count
soft         7
lite soft    5
middle soft  4
other        5
  

Комментарии:

1. Пометьте свой вопрос базой данных, которую вы используете.

Ответ №1:

Вы можете использовать подзапрос с накопительной суммой:

 select (case when running_count - count <= 15 then types else 'other' end) as types,
       sum(count)
from (select t.*, sum(count) over (order by count desc) as running_count
      from t
     ) t
group by (case when running_count - count <= 15 then types else 'other' end)