Как можно объединить часть имен на дэше?
Чтобы были группы “Пункт_1, Пункт_2, Остальные”
Как можно объединить часть имен на дэше?
Чтобы были группы “Пункт_1, Пункт_2, Остальные”
Пример запроса для объединения строк в группу:
select t.o, t.n, sum(t.r) r from(
select case when row_number() over (order by r desc) > 3 then 4 else row_number() over (order by r desc) end o, case when row_number() over (order by r desc) > 3 then 'other' else n end n, r from(
select 'name'||l::text n, random()*1000 r from generate_series(1,10,1) l where ${filters()}
) t
) t
group by t.o, t.n
order by t.o
здесь третий select имитирует изначальный запрос пользователя, который возвращает какое-то количество строк вида:
пункт_1 - 16584 - …
пункт_2 - 74654 - …
…
пункт_n - 45357 - …
Второй select сортирует строки по убыванию и объединяет все кроме первых n строк (в данном случае 3), таким образом создавая таблицу:
пункт_1 - 16584 - …
пункт_2 - 74654 - …
остальное - 684354 - …
Последний select выбирает необходимые столбцы из таблицы выше
подробнее про фильтрацию можно посмотреть здесь: https://help.luxmsbi.com/-925