@timur_gis

Как сруппировать частично совпадающие значения в SQL?

Есть таблица:
table
x y
500 1.0
400 2.3
101 4.1
select 
case when x in (500,400,101) then 'three'
case when x in (500,400) then 'one'
else '' end as "group",
sum (y) as "sum",
from table
group by
"group"

Результат:
table
group sum
one 3.3
three 7.4
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
group by case when x in (500,400,101) then 'three' case when x in (500,400) then 'one' else '' end
Ответ написан
LaRN
@LaRN
Senior Developer
Можно было бы добавить ещё одну таблицу групп с полями x и group. Заджойнить вашу table с новой таблицей по полю x и сгруппировать по полю group. В вашем варианте в какой-то момент case может стать очень сложным и не читаемым, адля добавления новой группы нужно всегда запрос дописывать, а это не гуд.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы