Rumah > pangkalan data > tutorial mysql > Bagaimanakah Kita Boleh Menggabungkan Selang Tarikh Bertindih dengan Cekap?

Bagaimanakah Kita Boleh Menggabungkan Selang Tarikh Bertindih dengan Cekap?

Mary-Kate Olsen
Lepaskan: 2024-12-30 21:43:15
asal
688 orang telah melayarinya

How Can We Efficiently Merge Overlapping Date Intervals?

Menggabungkan Selang Tarikh Bertindih: Pendekatan Cekap

Tugas untuk menggabungkan selang tarikh bertindih sering timbul dalam pelbagai konteks. Satu pendekatan biasa untuk menangani masalah ini melibatkan pengemaskinian selang secara berulang sehingga tiada lagi pertindihan wujud. Walaupun kaedah ini agak mudah, ia menimbulkan persoalan sama ada alternatif yang lebih cekap wujud.

Pendekatan Alternatif:

Pendekatan alternatif untuk menggabungkan selang tarikh bertindih telah dicadangkan oleh pengguna dalam urutan forum berkaitan. Kaedah ini memanfaatkan gabungan gabungan dan logik bersyarat untuk mencapai hasil yang diingini.

SELECT 
       s1.StartDate,
       MIN(t1.EndDate) AS EndDate
FROM @T s1 
INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate
  AND NOT EXISTS(SELECT * FROM @T t2 
                 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) 
WHERE NOT EXISTS(SELECT * FROM @T s2 
                 WHERE s1.StartDate > s2.StartDate AND s1.StartDate <= s2.EndDate) 
GROUP BY s1.StartDate 
ORDER BY s1.StartDate 
Salin selepas log masuk

Penjelasan:

Pendekatan ini berfungsi seperti berikut:

  • Ia mula-mula bergabung dengan jadual dengan dirinya sendiri untuk mengenal pasti pasangan bertindih selang.
  • Ia kemudiannya menggunakan syarat untuk menapis selang yang bertindih dengan yang lain.
  • Seterusnya, ia menghapuskan sebarang selang yang bertindih dengan selang yang tidak ditapis yang lain.
  • Akhir sekali , ia mengumpulkan selang mengikut tarikh mulanya dan mengira tarikh tamat minimum untuk setiap satu kumpulan.

Faedah:

  • Pendekatan ini mengelakkan keperluan untuk kemas kini berulang, yang boleh menjadi lebih cekap dalam senario tertentu.
  • Ia menghasilkan hasil yang konsisten tanpa mengira susunan input selang waktu.

Contoh:

Menggunakan data contoh yang sama yang disediakan dalam soalan asal, keputusan berikut diperoleh:

StartDate EndDate
2010-01-01 2010-06-13
2010-06-15 2010-06-25
2010-06-26 2010-08-16
2010-11-01 2010-12-31

Kesimpulan:

Pendekatan alternatif yang dibentangkan menawarkan cara yang cekap untuk menggabungkan tarikh bertindih selang waktu. Ia memanfaatkan gabungan gabungan dan logik bersyarat untuk mencapai hasil yang diingini, memberikan alternatif yang berdaya maju kepada pendekatan berulang.

Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menggabungkan Selang Tarikh Bertindih dengan Cekap?. 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