Что ж, агрегатная функция, сгруппированная по уникальному ключу, мало что сделает для вас, это точно. Звучит так, будто вы устали от идеи группировки, когда на самом деле все, что вам нужно, это три наиболее значимых события для каждого home_team
.
Попробуйте что-то вроде этого:
select
event_id,
home_team,
value
from
my_tbl t
where
event_id in
(select event_id from my_tbl
where home_team = t.home_team
order by value desc limit 0,3)
Обновление: ваша правка проясняет некоторые вещи, так что здесь:
select
(select min(event_id) from table2 where home_team = t2.home_team) as event_id,
t2.home_team,
avg(t1.value) as average
from
table1 t1
inner join table2 t2 on
t1.event_id = t2.event_id
group by
t2.home_team
То, что вы описываете, довольно бессмысленно. Вы хотите сгруппировать по event_id
, но затем показать только один home_team
? Если вы не взяли верхнюю строку home_team
:
select
home_team,
max(average) as topavg
from
(
select
t2.event_id,
t2.home_team,
avg(t1.value) as average
from
table1 t1
inner join table2 t2 on
t1.event_id = t2.event_id
group by
t2.event_id, t2.home_team
) as a
group by
home_team