Rumah >pangkalan data >tutorial mysql >Bagaimanakah SQL Boleh Mengenalpasti Julat Tarikh Berturut-turut Dalam Set Data?

Bagaimanakah SQL Boleh Mengenalpasti Julat Tarikh Berturut-turut Dalam Set Data?

Susan Sarandon
Susan Sarandonasal
2025-01-01 07:07:10524semak imbas

How Can SQL Identify Consecutive Date Ranges Within a Dataset?

Mengesan Julat Tarikh Berturut-turut dengan SQL

Untuk menentukan julat tarikh berturut-turut dalam lajur tarikh, teknik SQL boleh digunakan. Pertimbangkan senario di mana objek kalendar memerlukan maklumat tarikh mula dan tamat, dan lajur tertentu mengandungi satu siri tarikh, beberapa daripadanya bersebelahan dan yang lain tidak. Untuk mengenal pasti julat berturut-turut ini dengan cekap, penyelesaian SQL yang mantap dicari.

Satu pendekatan melibatkan mengeksploitasi sifat invarian jujukan berturut-turut apabila mengumpulkan mengikut perbezaan antara nilai tarikh dan nombor baris. Tarikh mula dan tamat dalam setiap kumpulan kemudiannya diambil sebagai nilai minimum dan maksimum, masing-masing.

Pertanyaan SQL berikut menggambarkan pendekatan ini:

WITH t AS (
  SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
  FROM @d
  GROUP BY InfoDate
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)

Pertanyaan ini secara berkesan mengumpulkan tarikh mengikut perbezaan mereka daripada nombor baris yang sepadan, menghasilkan kumpulan yang berbeza untuk setiap urutan berturut-turut. Tarikh minimum dan maksimum dalam setiap kumpulan kemudiannya dipilih untuk mewakili julat mula dan tamat.

Dengan menggunakan kaedah ini, output yang diingini boleh diperoleh, menyediakan senarai komprehensif julat tarikh berturut-turut yang diisih mengikut perbezaan antara tarikh mula dan tamat mereka.

Atas ialah kandungan terperinci Bagaimanakah SQL Boleh Mengenalpasti Julat Tarikh Berturut-turut Dalam Set Data?. 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