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
Lepaskan: 2025-01-05 06:43:42
asal
244 orang telah melayarinya

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 |
+------+------------+
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan