0Pricing
SQL Interview Prep · Pelajaran

INTERSECT dan EXCEPT untuk Perbandingan

Temukan baris yang sama dan berbeda di antara dua dataset.

INTERSECT dan EXCEPT untuk Perbandingan adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Operator Perbandingan

INTERSECT dan EXCEPT adalah operator himpunan untuk membandingkan dua kumpulan hasil, bukan menggabungkannya. Pewawancara menggunakannya dalam pertanyaan seperti "pelanggan mana yang ada di kedua daftar" atau "baris mana yang ada di A tetapi tidak di B".

  • INTERSECT = baris yang ada di kedua kueri.
  • EXCEPT = baris yang ada di kueri pertama, tetapi tidak di kueri kedua.

Hasil yang Dikembalikan INTERSECT

INTERSECT hanya mengembalikan baris berbeda yang muncul di kedua kumpulan hasil. Suatu baris harus cocok pada setiap kolom agar dianggap sama-sama ada.

Seperti UNION, INTERSECT biasa menghapus duplikat dan mengembalikan setiap baris yang sama satu kali.

SELECT customer_id FROM orders_2023
INTERSECT
SELECT customer_id FROM orders_2024;
-- customers who ordered in BOTH years

Hasil yang Dikembalikan EXCEPT

EXCEPT (disebut MINUS di Oracle) mengembalikan baris berbeda dari kueri pertama yang tidak muncul di kueri kedua. Operator ini bersifat berarah: A EXCEPT B berbeda dari B EXCEPT A.

Inilah cara alami untuk menemukan rekaman yang tidak ada dalam kumpulan data kedua.

SELECT customer_id FROM orders_2023
EXCEPT
SELECT customer_id FROM orders_2024;
-- ordered in 2023 but NOT in 2024 (churned)

EXCEPT Tidak Simetris

Poin wawancara yang sering ditanyakan: EXCEPT bersifat berarah. Menukar kedua kueri berarti menjawab pertanyaan yang berbeda.

  • A EXCEPT B = ada di A, tidak di B.
  • B EXCEPT A = ada di B, tidak di A.

Sebaliknya, INTERSECT bersifat simetris: A INTERSECT B sama dengan B INTERSECT A.

-- new customers in 2024 (not seen in 2023):
SELECT customer_id FROM orders_2024
EXCEPT
SELECT customer_id FROM orders_2023;

Duplikat dan Pilihan Baku DISTINCT

INTERSECT dan EXCEPT standar bekerja pada baris yang berbeda, seperti UNION. Baris masukan yang duplikat digabung sebelum perbandingan.

Beberapa basis data mendukung INTERSECT ALL dan EXCEPT ALL yang mempertahankan jumlah kemunculan, tetapi keduanya lebih jarang digunakan. Jika pewawancara tidak menyebutkan ALL, anggap semantiknya menggunakan baris berbeda.

SELECT city FROM a
INTERSECT ALL
SELECT city FROM b;
-- multiplicity-aware (Postgres supports this; MySQL 8+ too)

Membandingkan Seluruh Baris untuk Kesetaraan

Kedua operator membandingkan seluruh baris pada semua kolom yang dipilih. Dua baris sama hanya jika setiap kolom cocok. Hal ini membuat keduanya ideal untuk mendeteksi apakah dua tabel menyimpan data yang identik.

Pilih seluruh kumpulan kolom yang diperlukan agar perbandingannya bermakna.

SELECT id, name, email FROM prod_users
EXCEPT
SELECT id, name, email FROM staging_users;
-- rows in prod that differ from / are missing in staging

Pola Perbandingan Dua Arah pada Tabel

Untuk memeriksa apakah dua tabel identik, jalankan EXCEPT dalam kedua arah lalu gabungkan perbedaannya. Jika hasil gabungan tersebut kosong, kedua tabel benar-benar sama.

Ini adalah jawaban wawancara klasik untuk validasi data dalam pemeriksaan migrasi dan rekonsiliasi.

(SELECT * FROM table_a EXCEPT SELECT * FROM table_b)
UNION ALL
(SELECT * FROM table_b EXCEPT SELECT * FROM table_a);
-- empty result => tables are identical

Cara NULL Diperlakukan

Dalam operasi himpunan, dua nilai NULL diperlakukan sebagai sama satu sama lain untuk keperluan pencocokan. Hal ini berbeda dari aturan biasa bahwa NULL = NULL menghasilkan UNKNOWN.

Jadi, baris dengan NULL pada satu kolom akan cocok dengan baris lain yang memiliki NULL pada posisi yang sama. Pewawancara menguji hal ini karena bertentangan dengan aturan perbandingan biasa.

-- (1, NULL) INTERSECT (1, NULL) -> returns (1, NULL)
SELECT id, region FROM a
INTERSECT
SELECT id, region FROM b;

Prioritas Operator di antara Operasi Himpunan

Saat mencampur operator, INTERSECT biasanya memiliki prioritas yang lebih tinggi daripada UNION dan EXCEPT menurut standar SQL. Untuk menghindari ambiguitas, apit cabang-cabang dengan tanda kurung.

Menyatakan bahwa Anda menggunakan tanda kurung untuk memperjelas urutan evaluasi menunjukkan kematangan dalam wawancara.

(SELECT id FROM a EXCEPT SELECT id FROM b)
UNION
(SELECT id FROM c);

Memilih INTERSECT/EXCEPT atau JOIN

INTERSECT dan EXCEPT ringkas serta membandingkan seluruh baris dengan deduplikasi bawaan. JOIN lebih fleksibel (Anda dapat menyertakan kolom tambahan dan memilih cara menangani duplikat).

Utamakan operator himpunan ketika pertanyaannya hanya "baris mana yang sama / hilang". Beralihlah ke JOIN ketika Anda memerlukan kolom dari kedua sisi atau dialek tersebut tidak memiliki operator ini.

Memadukan Semuanya

Ringkasan yang dapat Anda ucapkan: "INTERSECT mengembalikan baris yang ada di kedua kueri dan bersifat simetris; EXCEPT mengembalikan baris yang ada di kueri pertama, tetapi tidak di kueri kedua, dan bersifat berarah. Keduanya membandingkan seluruh baris, memperlakukan NULL sebagai sama, dan secara baku menghasilkan baris berbeda."

Tambahkan trik perbandingan EXCEPT dua arah untuk pertanyaan lanjutan tentang rekonsiliasi data, dan topik ini tercakup sepenuhnya.

Pemeriksaan Singkat

Anda ingin mendapatkan pelanggan yang melakukan pemesanan pada 2023 tetapi NOT melakukan pemesanan pada 2024 (pelanggan yang berhenti bertransaksi).

Ringkasan

Pokok-pokok penting:

  • INTERSECT = baris di kedua kueri; bersifat simetris.
  • EXCEPT (Oracle: MINUS) = baris di kueri pertama yang tidak ada di kueri kedua; bersifat berarah.
  • Keduanya membandingkan seluruh baris dan secara baku menghasilkan keluaran yang berbeda.
  • NULL diperlakukan sebagai sama untuk keperluan pencocokan.
  • EXCEPT dua arah menghasilkan perbandingan lengkap tabel.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “INTERSECT dan EXCEPT untuk Perbandingan” gratis?

Ya — teks lengkap “INTERSECT dan EXCEPT untuk Perbandingan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “INTERSECT dan EXCEPT untuk Perbandingan”?

Temukan baris yang sama dan berbeda di antara dua dataset. Kamu berlatih SQL Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Interview Prep?

Tidak diperlukan pengalaman sebelumnya. SQL Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “INTERSECT dan EXCEPT untuk Perbandingan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Interview Prep ini?

Ya. Setiap pelajaran SQL Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. UNION vs UNION ALL
  2. Jumlah dan Kompatibilitas Tipe Kolom
  3. INTERSECT dan EXCEPT untuk Perbandingan
  4. Meniru Operasi Himpunan dengan JOIN
← Kembali ke SQL Interview Prep