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

Postgres:開発者ごとの最長ストリーク(日数)の定義

    これを行うにはトリックがあります。日付から増加する数列を引くと、連続する日付に対して一定になります。その後、これを使用して各開発者のグループを定義できます。

    select developer, max(numdays) as maxseq
    from (select developer, grp, min(MRDate) as MR_start, max(MRDate) as MR_end,
                 count(distinct MRDate) as numdays
          from (select t.*,
                      (MRDate - dense_rank() over (partition by developer order by date)) as grp
                from t
               ) t
          group by developer, grp
         ) t
    group by developer;
    

    日付ごとに最大で1つのレコードがあることがわかっている場合は、row_number()を使用できます。 dense_rank()の代わりに およびcount(*) count(distinct MRDate)の代わりに 。




    1. MSDBのメンテナンスの重要性

    2. 自動インクリメントIDを既存のテーブルに追加しますか?

    3. SQLiteの日付に月を追加する

    4. PHPでMySQLテーブルのデータをクリアしますか?