Если вы просто хотите группу 5, вероятно, можно просто создать столбец группы, на которой делит на 5.
with my_source_data as (
select 4 as spent, 1234 as totalsent, 123 as totalused from dual union all
select 6 as spent, 12 as totalsent, 4 as totalused from dual union all
select 7 as spent, 45 as totalsent, 32 as totalused from dual
)
select
(spent_group -1) * 5 + 1 as lower_bound,
spent_group * 5 as upper_bound, totalsent, totalused
from (
select
greatest(ceil(spent/5),1) as spent_group,
sum(totalsent) as totalsent, sum(totalused) totalused
from my_source_data
group by greatest(ceil(spent/5),1)
)
Этот код не совсем обрабатывать 0 или что-нибудь ниже-правильно начиная с он помещает все в нижнюю группу и называет его 1-5
, но ваши требования немного расплывчаты в этом отношении.
Кроме того, это разреженная группировка, поэтому будет только строка для 11-15, если есть исходные данные, которые позволяют ее создавать.
Спасибо, пони. +1 – EvilTeach
Мне просто нужна группа на основе условий по атрибуту. Здесь он (итоговый/общий) сгруппирован по группам 0-5, 6-10, 11-15 –