Lewati ke konten utama

Operator SQL NOT IN: Panduan Komprehensif untuk Pemula

Kuasai operator NOT IN di SQL dengan panduan pemula ini. Pelajari cara memfilter data secara efektif, menghindari jebakan umum, dan mengeksplorasi alternatif yang efisien
· 5 mnt Baca

Jelajahi bersama AI

Dalam ranah analisis dan manajemen data, SQL (Structured Query Language) merupakan alat penting untuk mengakses dan memanipulasi sistem basis data. Di antara banyak fungsinya, operator NOT IN menjadi cara yang ampuh untuk memfilter himpunan data, memungkinkan pengguna mengecualikan baris yang cocok dengan daftar nilai tertentu. Tutorial ini dirancang untuk mengulas operator NOT IN bagi pemula dan praktisi data, memastikan kejelasan penerapannya serta memahami potensi jebakannya.

Mengapa NOT IN?

Fokus pada operator NOT IN berangkat dari kegunaannya dalam skenario eksklusi data. Baik saat Anda membersihkan data, menyiapkan laporan, atau melakukan analisis kompleks, memahami cara mengecualikan titik data tertentu secara efektif sangatlah berharga. Operator ini menawarkan sintaks yang lugas tetapi memiliki nuansa yang dapat memengaruhi kinerja dan akurasi.

Keputusan kami untuk mengulas NOT IN secara mendalam adalah untuk memberikan pemahaman komprehensif yang membekali Anda agar dapat menggunakannya secara efektif dalam kueri SQL.

Memahami SQL NOT IN

Dasar-Dasar NOT IN

Operator NOT IN digunakan di dalam klausa WHERE untuk mengecualikan baris ketika nilai sebuah kolom yang ditentukan cocok dengan salah satu nilai dalam daftar tertentu. Sintaks dasarnya sebagai berikut:

SELECT column_names
FROM table_name
WHERE column_name NOT IN (value1, value2, ...);

Sintaks ini menyoroti peran operator dalam memfilter data—langkah krusial dalam analisis data dan manajemen basis data.

Aplikasi Praktis NOT IN

Pertimbangkan sebuah basis data yang berisi tabel informasi pelanggan. Jika Anda ingin memilih pelanggan yang bukan berasal dari kota-kota tertentu, NOT IN menjadi alat yang sangat berguna, memungkinkan Anda mengecualikan kota-kota tersebut dari himpunan hasil dengan mudah.

Contoh NOT IN Langkah demi Langkah

Contoh 1: Mengecualikan Nilai Tertentu

Misalkan kita memiliki tabel bernama Customers dengan kolom CustomerID, CustomerName, dan City. Untuk menemukan pelanggan yang tidak berada di 'New York' atau 'Los Angeles', kuerinya adalah:

CustomerlD

CustomerName

City

1

John Doe

New York

2

Jane Smith

Los Angeles

3

Emily Jones

Chicago

4

Chris Brown

Miami

5

Alex Johnson

San Francisco

6

Jessica White

New York

Tabel Customers

SELECT CustomerName, City
FROM Customers
WHERE City NOT IN ('New York', 'Los Angeles');

CustomerName

City

Emily Jones

Chicago

Chris Brown

Miami

Alex Johnson

San Francisco

Contoh 2: Menggunakan NOT IN dengan Subkueri

NOT IN juga dapat digunakan dengan subkueri. Misalnya, untuk menemukan produk yang belum pernah dipesan:

ProductID

ProductName

1

Apple

2

Banana

3

Orange

4

Pear

5

Grape

Tabel Products

OrderID

ProductID

101

2

102

4

103

2

104

3

Tabel Orders

SELECT ProductName
FROM Products
WHERE ProductID NOT IN (
  SELECT ProductID
  FROM Orders
);

ProductName

Apple

Grape

Jebakan Umum dan Cara Menghindarinya

Menangani Nilai NULL

Masalah umum dengan NOT IN muncul ketika daftar nilai berisi NULL. Karena NULL merepresentasikan nilai yang tidak diketahui, perbandingan apa pun dengan NULL menggunakan NOT IN tidak akan mengembalikan baris apa pun, bahkan jika ada baris yang secara logis seharusnya dikecualikan dari daftar.

Untuk mengatasinya, pastikan daftar nilai tidak mengandung NULL atau gunakan pendekatan alternatif seperti NOT EXISTS.

Contoh:

Misalkan kita memiliki tabel Orders dengan kolom CustomerID, sebagian di antaranya NULL untuk merepresentasikan pesanan tamu. Jika Anda menjalankan kueri untuk menemukan pesanan yang tidak dibuat oleh pelanggan tertentu, menyertakan NULL dalam daftar akan menyebabkan tidak ada hasil yang dikembalikan.

OrderID

CustomerID

101

3

102

4

103

2

104

 

106

1

Tabel Orders

-- Assume we want to exclude CustomerID 1, 2, and unknown (NULL) customers
SELECT OrderID
FROM Orders
WHERE CustomerID NOT IN (1, 2, NULL);

Kueri ini tidak akan mengembalikan baris apa pun, yang kemungkinan bukan hasil yang diinginkan.

Solusi: Untuk memastikan hasil yang akurat, hindari menyertakan NULL dalam daftar untuk NOT IN. Alternatifnya, gunakan kombinasi NOT IN untuk nilai yang diketahui dan IS NOT NULL untuk menangani NULL secara efektif.

SELECT OrderID
FROM Orders
WHERE CustomerID NOT IN (1, 2) AND CustomerID IS NOT NULL;

OrderID

101

102

Pertimbangan Kinerja

Untuk dataset besar atau subkueri, NOT IN bisa kurang efisien dibanding alternatif seperti NOT EXISTS atau LEFT JOIN /IS NULL. Inefisiensi ini berasal dari cara NOT IN membandingkan setiap baris dalam tabel dengan setiap nilai dalam daftar, yang dapat menyebabkan kinerja lambat pada dataset besar.

Alternatif untuk SQL NOT IN

Menggunakan NOT EXISTS

NOT EXISTS sering direkomendasikan dibanding NOT IN saat berurusan dengan subkueri yang mungkin mengembalikan nilai NULL. Umumnya lebih efisien karena akan berhenti segera setelah menemukan kecocokan.

Contoh:

Untuk mencari produk yang belum pernah dipesan, menggunakan NOT EXISTS:

SELECT ProductName
FROM Products p
WHERE NOT EXISTS (
  SELECT 1
  FROM Orders o
  WHERE o.ProductID = p.ProductID
);

ProductName

Apple

Grape

Kueri ini memeriksa ketidakberadaan sebuah produk di tabel orders, yang bisa lebih efisien daripada membandingkan terhadap daftar ID yang berpotensi besar dengan NOT IN.

LEFT JOIN / IS NULL

Alternatif efisien lainnya untuk mengecualikan baris adalah menggunakan LEFT JOIN dikombinasikan dengan klausa WHERE ... IS NULL. Metode ini sangat efektif untuk dataset besar.

Contoh:

Untuk mencapai tujuan yang sama, yaitu menemukan produk yang belum pernah dipesan:

SELECT p.ProductName
FROM Products p
LEFT JOIN Orders o ON p.ProductID = o.ProductID
WHERE o.ProductID IS NULL;

ProductName

Apple

Grape

Metode ini memanfaatkan LEFT JOIN untuk memasukkan semua produk dan pesanan yang cocok, lalu menyaring produk yang memiliki pesanan menggunakan WHERE o.ProductID IS NULL, sehingga efektif mengecualikannya.

Praktik Terbaik dalam Menggunakan NOT IN

  • Periksa daftar dari nilai NULL: Pastikan daftar yang digunakan dalam NOT IN tidak mengandung nilai NULL untuk menghindari hasil yang tidak terduga.
  • Pertimbangkan ukuran dataset: Untuk dataset besar atau subkueri, evaluasi apakah alternatif seperti NOT EXISTS dapat memberikan kinerja yang lebih baik.
  • Pengindeksan: Pastikan kolom yang digunakan dalam klausa NOT IN diindeks, jika memungkinkan, untuk meningkatkan kinerja kueri.

Menggunakan NOT IN dalam Proyek Data Nyata

Dalam analisis data, perintah SQL "Not IN" umum digunakan untuk mengambil data tertentu. Pada bagian ini, kita akan bekerja dengan basis data toko buku yang melacak persediaan (buku yang tersedia di toko) dan penjualan (buku yang terjual). Tujuan kita adalah mengidentifikasi buku mana yang belum pernah terjual.

Kita memiliki dua tabel:

  • Inventory: menyimpan informasi tentang buku di toko buku.
  • Sales: menyimpan catatan buku yang telah terjual.

image4.png

Tabel Inventory

image3.png

Tabel Sales

Sekarang, kita ingin mengetahui buku mana yang belum pernah terjual.

SELECT Title, Author 
FROM Inventory 
WHERE BookID NOT IN (
    SELECT BookID 
    FROM Sales
);

image1.png

Selanjutnya, kita ingin mengidentifikasi buku dalam persediaan yang belum terjual dalam satu bulan terakhir, dengan asumsi hari ini adalah 7 Februari 2024. Ini melibatkan pengecekan SaleDate di tabel Sales terhadap tanggal saat ini.

SELECT Title, Author 
FROM Inventory 
WHERE BookID NOT IN (
    SELECT BookID 
    FROM Sales
    WHERE SaleDate >= date('now', '-1 month')
);

image2.png

Kesimpulan

Operator NOT IN adalah alat serbaguna di SQL untuk mengecualikan nilai tertentu dari hasil kueri Anda. Dengan memahami sintaks, aplikasi praktis, dan potensi jebakannya, Anda dapat menggunakan operator ini secara efektif dalam tugas manipulasi data.

Ingatlah untuk mempertimbangkan nilai NULL dan ukuran dataset guna mengoptimalkan kinerja dan akurasi kueri Anda. Seiring Anda semakin akrab dengan NOT IN, Anda akan mendapati ini sebagai tambahan yang sangat berharga dalam perangkat SQL Anda, memungkinkan analisis dan pengelolaan data yang lebih presisi dan efisien.

Anda dapat mempelajari lebih lanjut tentang NOT IN dan NOT EXISTS di kursus kami Improving Query Performance in SQL Server serta mengeksplorasi operator SQL dan banyak lagi di SQL Basics Cheat Sheet dan SQL Fundamentals skill track.

Abid Ali Awan

Penulis

Abid Ali Awan

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai