I have next part of query:
x
SELECT types, count
FROM
Result is next:
types count
soft 3
lite soft 2
middle soft 7
hard soft 2
other 5
what I need is to merge results soft, lite soft and other as other. to get next table:
types count
middle soft 7
hard soft 2
other 9
Advertisement
Answer
You can use a case
expression`:
select (case when type in ('middle soft', 'hard soft') then type else 'other' end) as type,
sum(count)
from t
group by type;
If you want the result in a particular order — say with other
at the end, then a lateral join helps:
select v.type, sum(count)
from t cross join lateral
(values (case when type in ('middle soft', 'hard soft') then type else 'other' end)
) v(type)
group by v.type
order by (v.type = 'other') asc, -- put it last
count(*) desc;