PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres:Definiowanie najdłuższej passy (w dniach) na programistę

Jest w tym pewien trik. Jeśli od dat odejmiesz rosnącą sekwencję liczb, będą one stałe dla dat, które są sekwencyjne. Możemy następnie użyć tego do zdefiniowania grup dla każdego programisty.

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;

Jeśli wiesz, że istnieje co najwyżej jeden rekord na datę, możesz użyć row_number() zamiast dense_rank() i count(*) zamiast 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. Błąd podczas uruchamiania python manage.py syncdb lokalnie, ale brak błędu podczas uruchamiania tego samego polecenia przez Heroku

  2. Odejmij dwa zapytania z tej samej tabeli

  3. postgresql:.pgpass nie działa

  4. Jak pracować z PGpoint dla Geolokalizacji przy użyciu PostgreSQL?

  5. Obliczanie sumy pola na podstawie innych kolumn tabeli złączeń