sql >> Database >  >> RDS >> Mysql

Krijg top-k van elke groep in MySQL

Probeer dit eens:

select postid, clicks,
    @num := if(@year = @year and @month = month, @num + 1, 1) row_number,
    @year := year year, @month := month month
from (
    select * from t
    order by year, month, clicks desc
) s, (select @num := 0, @year := '', @month := '') init
group by year, month, postid, clicks
having row_number <= 2
order by year, month, clicks desc

Fiddle hier




  1. MS Access &ODBC gebruiken om verbinding te maken met een externe PostgreSQL

  2. Mysql externe sleutel door niet-unieke sleutel - hoe is dat mogelijk?

  3. Controleren op een leeg resultaat (PHP, PDO en MySQL)

  4. NodeJS Server met mysql loopt vast