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

Postgresql:各グループ/カテゴリから上位nパーセント(%)のエントリを選択するにはどうすればよいですか?

    各グループの行数のパーセンテージに基づいて行を取得するには、2つのウィンドウ関数を使用できます。1つは行をカウントし、もう1つは一意の番号を指定します。

    select gp,
           val
    from (
      select gp, 
             val,
             count(*) over (partition by gp) as cnt,
             row_number() over (partition by gp order by val desc) as rn
      from temp
    ) t
    where rn / cnt <= 0.75;
    

    SQLFiddleの例:http://sqlfiddle.com/#!15 / 94fdd / 1

    ところで:charを使用する 定義された長さに埋め込まれる固定長のデータ型であるため、ほとんどの場合、これは悪い考えです。例を設定するためだけにそれを行い、実際のテーブルでは使用しないでください。



    1. MariaDB JSON_DEPTH()の説明

    2. 並列処理がVACUUMに登場

    3. SQL ServerのOBJECTPROPERTY()とOBJECTPROPERTYEX():違いは何ですか?

    4. PostgreSqlでDB所有者の名前を取得します