PostgreSQL
 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;

Ако знаете, че има най-много един запис на дата, тогава можете да използвате row_number() вместо dense_rank() и count(*) вместо count(distinct MRDate) .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql - актуализиране на дървовидната таблица с редове от същата таблица чрез промяна на id и parent_id

  2. SQLAlchemy или psycopg2?

  3. Как да предам запис на PL/pgSQL функция?

  4. Стартирайте скрипт след входна точка на контейнер в docker-compose

  5. postgres:вземете първите n срещания на стойност във всяка група