Dalam bidang analisis data, adalah perkara biasa untuk menghadapi julat masa atau selang tarikh yang bertindih. Untuk menggabungkan selang bertindih ini dengan berkesan ke dalam rekod yang berbeza, penyelesaian yang mantap dan cekap diperlukan.
Satu pendekatan mudah untuk menggabungkan selang tarikh bertindih dibentangkan dalam soalan yang diberikan, menggunakan satu siri kenyataan KEMASKINI dalam satu gelung. Walaupun kaedah ini mencapai hasil yang diingini, ia memperkenalkan kebimbangan sama ada mungkin terdapat penyelesaian yang lebih elegan atau berprestasi.
Pendekatan alternatif, dilaksanakan dalam jawapan yang disediakan, memanfaatkan kuasa subkueri berkorelasi dan keadaan TIDAK WUJUD. Pendekatan ini melibatkan beberapa pernyataan SQL yang beroperasi bersama untuk mengenal pasti dan menggabungkan selang bertindih:
SELECT s1.StartDate, --t1.EndDate 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
Memecahkan langkah:
Pendekatan ini menawarkan prestasi dan kejelasan yang lebih baik berbanding kaedah KEMASKINI yang berulang, menjadikannya penyelesaian pilihan untuk menggabungkan selang tarikh bertindih dalam persekitaran SQL.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Selang Tarikh Bertindih dengan Cekap dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!