sql >> Database >  >> RDS >> PostgreSQL

Postgres:de langste streak (in dagen) per ontwikkelaar definiëren

Er is een truc om dit te doen. Als u een oplopende reeks getallen van de datums aftrekt, zijn ze constant voor opeenvolgende datums. We kunnen dit vervolgens gebruiken om groepen voor elke ontwikkelaar te definiëren.

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;

Als je weet dat er maximaal één record per datum is, dan kun je row_number() . gebruiken in plaats van dense_rank() en count(*) in plaats van count(distinct MRDate) .




  1. onjuist doden van mysqld - start nu niet

  2. Hoe unicode-gegevens in orakel op te slaan?

  3. Een SQL Server-database herstellen (T-SQL)

  4. Persistent versus niet-persistent - Welke moet ik gebruiken?