sql >> Database >  >> RDS >> PostgreSQL

postgres:haal de top n exemplaren van een waarde binnen elke groep

Zoiets als dit:

select *
from (
    select userid, 
           letter, 
           dense_rank() over (partition by userid order by count(*) desc) as rnk
    from letters
    group by userid, letter
) t
where rnk <= 2
order by userid, rnk;

Merk op dat ik user heb vervangen met userid omdat het een slechte gewoonte is om gereserveerde woorden voor kolommen te gebruiken.

Hier is een SQLFiddle:http://sqlfiddle.com/#!12/ec3ec/1



  1. Fatale fout:oproep naar niet-gedefinieerde functie sqlsrv_connect() in C:\xampp\htdocs

  2. Oracle PL/SQL krijgt IP v4 van de server?

  3. Hoe velden op naam te krijgen in query Python?

  4. Wat zijn door de klant opgestelde verklaringen?