PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mendapatkan rentetan sekuensial maksimum dengan acara

Naluri Anda bagus dalam melihat baris dengan nol peristiwa dan mengerjakannya. Kita dapat menggunakan subquery dengan fungsi jendela untuk mendapatkan "celah" antara nol hari kejadian, dan kemudian dalam kueri di luarnya mengambil catatan yang kita inginkan, seperti:

select * 
from (
  select date as day_after_streak
   , lag(date) over(order by date asc) as previous_zero_date 
   , date - lag(date) over(order by date asc) as difference
   , date_part('days', date - lag(date) over(order by date asc) ) - 1 as streak_in_days
  from dates

  group by date
  having sum(events) = 0 ) t 
where t.streak_in_days is not null
order by t.streak_in_days desc
limit 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menyimpan array atau beberapa nilai dalam satu kolom

  2. Django bagaimana menghubungkan kembali setelah DatabaseError:query timeout

  3. Apa yang setara dengan CHARINDEX (SQL SERVER) di POSTGRESQL?

  4. pg_stat_activity - cara melihat aktivitas saat ini di dalam prosedur tersimpan yang sedang berjalan

  5. SQL:Keuntungan dari ENUM vs. hubungan satu-ke-banyak?