sql >> データベース >  >> RDS >> PostgreSQL

postgres:各グループ内の値の上位n個のオカレンスを取得します

    このようなもの:

    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;
    

    userを置き換えたことに注意してください useridを使用 列に予約語を使用するのは悪い習慣だからです。

    SQLFiddleは次のとおりです。 http://sqlfiddle.com/#!12/ec3ec/1



    1. MySQLフィルターJSON_CONTAINS配列からの任意の値

    2. Laravelでこれを行う方法、サブクエリ

    3. カーソル内のPL/SQL変数は、バインドパラメータと実質的に同じですか?

    4. 複数のテーブルデータをフェッチするためのMySQLへの結合