0Pricing
SQL Interview Prep · Ders

Karşılaştırma için INTERSECT ve EXCEPT

İki veri kümesi arasındaki ortak ve farklı satırları bulun.

Karşılaştırma için INTERSECT ve EXCEPT, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

Karşılaştırma İşleçleri

INTERSECT ve EXCEPT, iki sonuç kümesini birleştirmek yerine karşılaştırmak için kullanılan küme işleçleridir. Mülakatçılar bunları "hangi müşteriler her iki listede de bulunuyor" veya "hangi satırlar A'da var ama B'de yok" gibi sorularda kullanır.

  • INTERSECT = her iki sorguda da bulunan satırlar.
  • EXCEPT = ilk sorguda bulunup ikinci sorguda bulunmayan satırlar.

INTERSECT Ne Döndürür

INTERSECT, yalnızca her iki sonuç kümesinde de bulunan farklı satırları döndürür. Bir satırın ortak sayılması için her sütunda eşleşmesi gerekir.

UNION gibi, yalın INTERSECT de yinelenenleri kaldırır ve her ortak satırı bir kez döndürür.

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

EXCEPT Ne Döndürür

EXCEPT (Oracle'da MINUS olarak adlandırılır), ilk sorguda bulunup ikinci sorguda bulunmayan farklı satırları döndürür. Yönlüdür: A EXCEPT B ile B EXCEPT A farklı sonuç verir.

Bu, ikinci veri kümesinde eksik olan kayıtları bulmanın doğal yoludur.

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

EXCEPT Simetrik Değildir

Mülakatlarda sık sorulan bir nokta: EXCEPT yönlüdür. İki sorgunun yerini değiştirmek farklı bir soruyu yanıtlar.

  • A EXCEPT B = A'da olup B'de olmayanlar.
  • B EXCEPT A = B'de olup A'da olmayanlar.

Buna karşılık INTERSECT simetriktir: A INTERSECT B, B INTERSECT A'ya eşittir.

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

Yinelenenler ve DISTINCT Varsayılanı

Standart INTERSECT ve EXCEPT, UNION gibi farklı satırlar üzerinde çalışır. Girişteki yinelenen satırlar karşılaştırmadan önce tekilleştirilir.

Bazı veritabanları, çokluğu koruyan INTERSECT ALL ve EXCEPT ALL işlemlerini destekler; ancak bunlar daha az yaygındır. Mülakatçı ALL demediyse, DISTINCT davranışını varsayın.

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

Eşitlik Açısından Tüm Satırları Karşılaştırma

Her iki işleç de seçilen tüm sütunlar üzerinden satırların tamamını karşılaştırır. İki satır ancak her sütun eşleştiğinde eşittir. Bu nedenle iki tablonun aynı verileri içerip içermediğini belirlemek için idealdirler.

Karşılaştırmanın anlamlı olması için önem verdiğiniz tüm sütunları seçin.

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

İki Yönlü Tablo Farkı Deseni

İki tablonun özdeş olup olmadığını denetlemek için EXCEPT işlemini her iki yönde çalıştırın ve farkları birleştirin. Birleşik sonuç boşsa tablolar tamamen eşleşir.

Bu, taşıma ve mutabakat denetimleri için klasik bir veri doğrulama mülakat yanıtıdır.

(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

NULL Değerlerine Nasıl Davranılır

Küme işlemleri içinde iki NULL değeri, eşleştirme amacıyla birbirine eşit kabul edilir. Bu durum, normalde NULL = NULL ifadesinin UNKNOWN olması kuralından farklıdır.

Bu nedenle bir sütununda NULL bulunan satır, aynı konumunda NULL bulunan başka bir satırla eşleşir. Mülakatçılar bunu, olağan karşılaştırma kurallarıyla çeliştiği için sınar.

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

Küme İşleçleri Arasındaki İşlem Önceliği

İşleçler karıştırıldığında, SQL standardında INTERSECT genellikle UNION ve EXCEPT'ten daha yüksek önceliğe sahiptir. Belirsizliği önlemek için dalları parantez içine alın.

Değerlendirme sırasını açıkça belirtmek için parantez kullandığınızı söylemek, mülakatta yetkinlik gösterir.

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

INTERSECT/EXCEPT ile JOIN Arasında Seçim

INTERSECT ve EXCEPT özlüdür; tüm satırları yerleşik tekilleştirmeyle karşılaştırır. JOIN'ler daha esnektir; ek sütunlar döndürebilir ve yinelenenleri nasıl ele alacağınızı seçebilirsiniz.

Soru yalnızca "hangi satırlar ortak / eksik" olduğunda küme işleçlerini tercih edin. Her iki taraftan da sütunlara ihtiyaç duyduğunuzda veya SQL lehçesinde bu işleçler bulunmadığında JOIN'lere geçin.

Hepsini Bir Araya Getirme

Şu özeti ezberden söyleyebilirsiniz: "INTERSECT her iki sorguda da bulunan satırları döndürür ve simetriktir; EXCEPT ilk sorguda bulunup ikinci sorguda bulunmayan satırları döndürür ve yönlüdür. Her ikisi de satırların tamamını karşılaştırır, NULL değerlerini eşit kabul eder ve varsayılan olarak DISTINCT sonuçlar döndürür."

Veri mutabakatı hakkındaki devam sorusu için iki yönlü EXCEPT farkı yöntemini de eklerseniz konuyu tamamen kapsarsınız.

Hızlı Kontrol

2023'te sipariş vermiş ancak 2024'te sipariş vermemiş müşterileri (kaybedilen müşterileri) istiyorsunuz.

Özet

Önemli noktalar:

  • INTERSECT = her iki sorguda bulunan satırlar; simetriktir.
  • EXCEPT (Oracle: MINUS) = ilk sorguda bulunup ikinci sorguda bulunmayan satırlar; yönlüdür.
  • Her ikisi de satırların tamamını karşılaştırır ve varsayılan olarak farklı sonuçlar döndürür.
  • NULL değerleri eşleştirme amacıyla eşit kabul edilir.
  • İki yönlü EXCEPT eksiksiz bir tablo farkı sağlar.

Sıkça Sorulan Sorular

“Karşılaştırma için INTERSECT ve EXCEPT” dersi ücretsiz mi?

Evet — “Karşılaştırma için INTERSECT ve EXCEPT” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“Karşılaştırma için INTERSECT ve EXCEPT” dersinde ne öğreneceğim?

İki veri kümesi arasındaki ortak ve farklı satırları bulun. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Karşılaştırma için INTERSECT ve EXCEPT” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. UNION ve UNION ALL Karşılaştırması
  2. Sütun Sayısı ve Tür Uyumluluğu
  3. Karşılaştırma için INTERSECT ve EXCEPT
  4. Küme İşlemlerini Birleştirmelerle Taklit Etme
← SQL Interview Prep Sayfasına Dön