sql >> Databáze >  >> RDS >> Mysql

Získejte top-k každé skupiny v MySQL

Zkuste to:

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 zde




  1. Změňte číslo data aplikace Excel na datum Oracle

  2. Připojení k MySql pomocí Java - SSL připojení

  3. Omezení pouze pro jeden záznam označený jako výchozí

  4. MySQL klauzule 'WHERE', která vylučuje výsledky v poddotazu