PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgres:Xác định chuỗi dài nhất (tính theo ngày) cho mỗi nhà phát triển

Có một mẹo để làm điều này. Nếu bạn trừ một chuỗi số tăng dần khỏi các ngày, thì chúng sẽ không đổi đối với các ngày có tuần tự. Sau đó, chúng tôi có thể sử dụng điều này để xác định nhóm cho từng nhà phát triển.

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;

Nếu bạn biết có nhiều nhất một bản ghi mỗi ngày, thì bạn có thể sử dụng row_number() thay vì dense_rank()count(*) thay vì 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. DecimalField chuyển đổi 0 thành 0E-10

  2. Sự cố với bộ chứa postgresql và pgadmin docker

  3. Mệnh đề / câu lệnh SQLAlchemy SELECT WITH (pgsql)

  4. Trừ các tuần cho một ngày trong PostgreSQL

  5. Chuỗi kết nối .Net PostgreSQL