Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Kejadian Nilai Berturut-turut dengan Cekap dalam Jadual SQL?

Bagaimana untuk Mengira Kejadian Nilai Berturut-turut dengan Cekap dalam Jadual SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-05 06:43:42314semak imbas

How to Efficiently Count Consecutive Value Occurrences in a SQL Table?

Mengira Kejadian Berturut-turut Nilai dalam Jadual

Dalam pangkalan data dengan jadual yang mengandungi lajur nilai, menentukan kiraan kejadian berturut-turut daripada setiap nilai boleh menjadi tugas yang berguna untuk pelbagai senario analisis data. Soalan ini meneroka cabaran untuk mencapai kiraan ini menggunakan teknik SQL yang cekap.

Data yang disediakan terdiri daripada jadual dengan lajur Id dan lajur Nama yang mengandungi nilai 'A', 'B' dan 'C'. Objektifnya adalah untuk mengira kejadian berturut-turut bagi nilai-nilai ini dalam lajur Nama dan membentangkan keputusan seperti berikut:

+------+------------+
| Name | Repetition |
+------+------------+
| A    |          2 |
| B    |          4 |
| C    |          1 |
| B    |          2 |
+------+------------+

Satu pendekatan yang dicuba ialah menggunakan fungsi COUNT() ke atas partition mengikut Nama, tetapi ini menghasilkan keputusan yang tidak betul. Untuk menangani perkara ini, kaedah alternatif yang memanfaatkan nombor baris boleh digunakan.

Coretan kod berikut membentangkan penyelesaian yang lebih baik:

select name, count(*)
from (
    select t.*,
           (
               row_number() over (order by id) -
               row_number() over (partition by name order by id)
           ) as grp
    from t
) t
group by grp, name;

Pendekatan ini menggunakan perbezaan antara dua nombor baris untuk mengenal pasti berturut-turut kejadian. Dengan menolak nombor baris dalam setiap kumpulan daripada nombor baris keseluruhan, pengecam kumpulan unik dicipta untuk setiap jujukan nilai berturut-turut. Fungsi COUNT() kemudiannya digunakan pada kumpulan ini, memberikan kiraan yang diingini untuk setiap kejadian nilai berturut-turut.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Kejadian Nilai Berturut-turut dengan Cekap dalam Jadual SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn