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

パーティション内の連続した番号の最大のグループを見つける

    これは、ウィンドウ関数を使用して実行できます。

    select player_id, runs, count(*) as numruns
    from (select p.*,
                 (row_number() over (partition by player_id order by match_date) -
                  row_number() over (partition by player_id, runs order by match_date)
                 ) as grp
          from players p
         ) pg
    group by grp, player_id, runs
    order by numruns desc
    limit 1;
    

    重要な観察事項は、「シーケンスでの実行」にはこのプロパティがあることです。日付ごとに(各プレーヤーの)行を列挙し、各プレーヤーの行と日付ごとの実行を列挙すると、実行時の差は一定になります。すべて同じで順番になっています。これにより、必要なプレーヤーを識別するための集計に使用できるグループが形成されます。

    こちら SQLフィドルです。



    1. MySQL Workbench CEを使用してデータベースのデータディクショナリをエクスポートしますか?

    2. Oracleの時間比較

    3. PHP/MySQL挿入で一重引用符をエスケープしても機能しない

    4. Laravel1048データの保存時に列をNULLにすることはできません