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

Menemukan kelompok bilangan berurutan terbesar dalam sebuah partisi

Anda dapat melakukan ini dengan fungsi jendela.

select player_id, runs, count(*) as numruns
from (select p.*,
             (row_number() over (partition by player_id order by match_date) -
              row_number() over (partition by player_id, runs order by match_date)
             ) as grp
      from players p
     ) pg
group by grp, player_id, runs
order by numruns desc
limit 1;

Pengamatan utama adalah bahwa "berjalan secara berurutan" memiliki properti ini:jika Anda menghitung baris (untuk setiap pemain) berdasarkan tanggal dan Anda menghitung baris untuk setiap pemain dan berdasarkan tanggal berjalan, maka perbedaannya konstan ketika berjalan semuanya sama dan berurutan. Itu membentuk grup yang dapat Anda gunakan untuk agregasi untuk mengidentifikasi pemain yang Anda inginkan.

Di sini adalah SQL Fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. urlencode hanya dengan fungsi bawaan

  2. Ubah stempel waktu menjadi waktu lokal untuk zona waktu tertentu selama 'COPY .. TO ..'

  3. Cara menggunakan PostgreSQL hstore/json dengan JdbcTemplate

  4. Postgresql dan jsonb - memasukkan kunci/nilai ke dalam array multi-level

  5. Mengapa menginstal DBD::Pg gagal di DynaLoader?