x
JOIN public.match m ON (s.stadium_id = m.stadium_id)
group
AS (
)
SELECT round_number ,stadium_name ,spectators FROM ( SELECT round_number ,stadium_name ,spectators ,RANK() OVER ( PARTITION BY round_number ORDER BY spectators DESC ) AS rank1 FROM t1 ) AS s1 WHERE rank1 = 1
<br>
Any smaller query than this?
Advertisement
Answer
I think you can just use window functions:
select ms.*
from (select m.round_number, s.stadium_name, m.no_spectators,
row_number() over (partition by m.round_number order by m.no_spectators desc) as seqnum
from public.stadium s join
public.match m
on s.stadium_id = m.stadium_id
) ms
where seqnum = 1
order by m.round_number;
I don’t see why aggregation would be needed for the inner query.