Mengenal pasti Kumpulan Baris Berturut-turut untuk Pengagregatan
Isu:
Dapatkan nilai minimum dan maksimum bagi permulaan dan berakhir untuk baris berturut-turut nilai perbuatan tertentu. Setiap nama unik mentakrifkan urutan kejadian perbuatan yang berbeza. Input tidak memberikan lajur tambahan untuk pengenalan baris.
Pendekatan:
Untuk mewujudkan identiti baris dalam setiap kumpulan tindakan nama, kami menggunakan nombor baris:
row_number() over (partition by name, act order by rn) as act_n row_number() over (partition by name order by rn) as rn
Nombor baris ini membolehkan kami membezakan baris dalam kumpulan dan mengenal pasti julat tindakan yang berturutan nilai.
Mengagregatkan untuk Min dan Maks:
Untuk mencari output yang diingini bagi setiap gabungan nama-tindakan, kami mengagregatkan data dalam kumpulan baris berturut-turut. Pengiraan utama ialah perbezaan antara dua nombor baris:
rn - act_n diff
Perbezaan ini mewakili kedudukan dalam setiap kumpulan, membolehkan kami menentukan julat berturut-turut.
select name, act, min(startt) startt, max(endd) endd from ( select name, act, row_number() over (partition by name order by name, startt) rn, row_number() over (partition by name, act order by name, startt) act_n, startt, endd from @t ) group by (rn - act_n), name, act order by name;
Pertanyaan ini mengumpulkan data mengikut perbezaan nombor baris, memberikan output yang diingini.
Atas ialah kandungan terperinci Bagaimana Mencari Nilai Minimum dan Maksimum untuk Baris Berturut-turut Berdasarkan Nilai Akta Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!