Хотя мне больше нравится ответ @Oto Shavadze, я все же хотел бы поделиться решением, о котором подумал:
select data.category, SUM(data.value), hlp.filename
from data
left join (
select category, filename
from data
where style = 2
group by category
limit 1
) as hlp
on data.category = hlp.category
group by data.category
В этом решении используется подзапрос, который выберет соответствующий filename
для каждогоcategory
.
РЕДАКТИРОВАТЬ:
Похоже, что веб-сайт, который я использовал, не был очень ограничительным, при использовании colum, не перечисленных в группе или вагрегатная функция.
Итак, здесь обновленная версия, использующая функцию MIN () для имени файла, как я сказал в комментариях:
select data.category, SUM(data.value), MIN(hlp.filename)
from data
left join (
select category, MIN(filename) as filename
from data
where style = 2
group by category
) as hlp
on data.category = hlp.category
group by data.category;