Mencari Minimum dan Maksimum untuk Baris Berturut-turut dengan Jurang dan Pulau
Dalam konteks set data tersusun yang mengandungi jujukan peristiwa yang diwakili oleh baris dalam jadual, tugasnya adalah untuk menentukan selang masa minimum dan maksimum untuk baris berturut-turut yang berkongsi jenis acara yang sama. Masalah ini timbul apabila berurusan dengan data yang melibatkan jurang dan pulau, menjadikan kaedah pengagregatan tradisional tidak mencukupi.
Memahami Input
Jadual input terdiri daripada lajur berikut:
Mengenal pasti Kumpulan Berturut-turut
Untuk mengenal pasti kumpulan baris berturut-turut dengan jenis acara yang sama, kami mengira perbezaan antara nombor baris untuk jenis acara dan baris keseluruhan penomboran:
row_number() over (partition by name, act order by rn) as seqnum_na row_number() over (partition by name order by rn) as seqnum_n
Lajur baharu ini, seqnum_na dan seqnum_n, masing-masing mewakili nombor jujukan untuk jenis acara dan nombor jujukan keseluruhan. Menolak seqnum_na daripada seqnum_n mencipta lajur baharu yang mewakili nombor kumpulan untuk setiap subset berturut-turut baris dalam jenis acara.
Pengagregatan dengan Nombor Kumpulan
Dengan nombor kumpulan dikenal pasti, kita boleh mengagregat masa mula dan tamat untuk mencari minimum dan maksimum bagi setiap satu kumpulan:
select name, act, min(startt) as startt, max(endd) as endd from (select i.*, row_number() over (partition by name, act order by rn) as seqnum_na, row_number() over (partition by name order by rn) as seqnum_n from input i ) i group by (seqnum_n - seqnum_na), name, act;
Dengan mengumpulkan mengikut nombor kumpulan ini bersama-sama dengan nama dan jenis acara, kami mengenal pasti dan mengagregatkan baris berturut-turut dengan cekap dalam setiap subset, memberikan selang masa minimum dan maksimum yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana Mencari Selang Masa Minimum dan Maksimum untuk Acara Berturut-turut dengan Jurang dan Pulau?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!