0Pricing
SQL Academy · Pelajaran

DISTINCT pada Beberapa Kolom

Keunikan berdasarkan kombinasi.

DISTINCT pada Beberapa Kolom adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Mengapa Beberapa Kolom?

Anda sudah mengetahui bahwa SELECT DISTINCT menghapus baris duplikat. Namun, apa arti “duplikat” ketika kueri Anda mengembalikan beberapa kolom?

Sebuah baris hanya dianggap duplikat jika setiap kolom yang dipilih memiliki nilai yang sama dengan baris lain. Jika bahkan satu kolom berbeda, kedua baris tetap dipertahankan.

Tabel Contoh: Pesanan

Mari buat tabel pesanan kecil untuk bereksperimen. Tabel ini menyimpan informasi tentang pelanggan yang membeli dari kategori tertentu dan negara tertentu.

CREATE TABLE orders (
  id         INTEGER,
  customer   VARCHAR(50),
  category   VARCHAR(50),
  country    VARCHAR(50)
);

INSERT INTO orders VALUES
  (1, 'Alice', 'Electronics', 'US'),
  (2, 'Alice', 'Books',       'US'),
  (3, 'Bob',   'Electronics', 'UK'),
  (4, 'Alice', 'Electronics', 'US'),
  (5, 'Bob',   'Electronics', 'UK'),
  (6, 'Carol', 'Clothing',    'CA');

DISTINCT pada Satu Kolom

Sebagai pengingat singkat: menggunakan DISTINCT pada satu kolom hanya mengembalikan setiap nilai unik untuk kolom tersebut.

Di sini kita mendapatkan setiap nama pelanggan yang unik—hanya tiga baris, meskipun terdapat enam pesanan.

SELECT DISTINCT customer
FROM orders;

DISTINCT pada Dua Kolom

Sekarang tambahkan kolom kedua. Kata kunci DISTINCT tetap hanya muncul satu kali, tepat setelah SELECT. Basis data memperlakukan setiap pasangan (pelanggan, kategori) yang unik sebagai satu baris.

Alice muncul dua kali—sekali untuk Elektronik dan sekali untuk Buku—karena keduanya merupakan kombinasi yang berbeda.

SELECT DISTINCT customer, category
FROM orders;

Cara Memeriksa Keunikan

Basis data membandingkan gambaran lengkap setiap baris. Agar DISTINCT menghapus suatu baris, semua kolom dalam daftar SELECT harus cocok persis dengan baris yang sudah pernah ditemukan.

Dalam tabel pesanan kita, baris 3 dan 5 sama-sama berisi (Bob, Elektronik, UK)—kecocokan sempurna pada ketiga kolom—sehingga salah satunya dihapus.

SELECT DISTINCT customer, category, country
FROM orders;
-- Row (Bob, Electronics, UK) appears only once
-- even though it occurs on rows 3 and 5

Kecocokan Sebagian Tidak Dihapus

Alice memiliki dua baris dengan kategori = Elektronik, tetapi keduanya memiliki negara = US. Dengan ketiga kolom dipilih, kedua baris asli tersebut identik, sehingga hanya satu yang dipertahankan.

Ubah pilihan kolom, dan pemeriksaan keunikannya juga berubah.

-- Select only customer + country
-- (Alice, US) appears twice in the table but DISTINCT keeps it once
SELECT DISTINCT customer, country
FROM orders;

-- Now add category back — uniqueness recalculated
SELECT DISTINCT customer, category, country
FROM orders;

Kasus Penggunaan di Dunia Nyata: Pasangan Unik

Pola yang umum adalah menemukan setiap kombinasi dua atribut yang unik — misalnya, kategori produk apa yang dijual di negara mana, terlepas dari berapa kali setiap penjualan terjadi.

SELECT DISTINCT category, country
FROM orders
ORDER BY category, country;

Menggabungkan DISTINCT dengan WHERE

Anda dapat menyaring baris terlebih dahulu dengan WHERE, lalu DISTINCT menghapus duplikat dari hasil yang telah disaring. Kedua klausa bekerja secara independen — WHERE mempersempit data, sedangkan DISTINCT menghapus duplikatnya.

SELECT DISTINCT customer, category
FROM orders
WHERE country = 'US';

DISTINCT vs GROUP BY

Cara lain yang setara untuk mendapatkan kombinasi unik adalah GROUP BY. Kedua pendekatan menghasilkan hasil yang sama untuk penghapusan duplikat biasa. Perbedaannya terlihat saat Anda memerlukan agregat: GROUP BY memungkinkan Anda menambahkan COUNT(*), SUM(), dan sebagainya, sedangkan DISTINCT tidak.

-- Using DISTINCT
SELECT DISTINCT customer, category
FROM orders;

-- Equivalent using GROUP BY
SELECT customer, category
FROM orders
GROUP BY customer, category;

Menghitung Kombinasi Unik

Membungkus DISTINCT multi-kolom di dalam subkueri memungkinkan Anda menghitung berapa banyak kombinasi unik yang ada. Ini merupakan cara praktis untuk mengukur keragaman dalam data Anda.

SELECT COUNT(*) AS unique_customer_category_pairs
FROM (
  SELECT DISTINCT customer, category
  FROM orders
) AS deduped;

Kesalahan Umum: DISTINCT Berlaku untuk Semua Kolom

Kesalahpahaman yang sering terjadi adalah bahwa DISTINCT hanya berlaku untuk kolom pertama yang dicantumkan. Itu tidak benar. DISTINCT selalu mempertimbangkan seluruh baris yang dibentuk oleh semua kolom yang dipilih.

Anda tidak dapat menggunakan DISTINCT hanya pada beberapa kolom sambil mempertahankan duplikat pada kolom lainnya — untuk itu, Anda memerlukan fungsi jendela seperti ROW_NUMBER().

-- This does NOT give distinct customers with any category
-- It gives distinct (customer, category) pairs
SELECT DISTINCT customer, category
FROM orders;

-- If you want one row per customer (any category), use:
SELECT customer, MIN(category) AS sample_category
FROM orders
GROUP BY customer;

Pemeriksaan Cepat

Uji pemahaman Anda tentang DISTINCT pada beberapa kolom.

Ringkasan Pelajaran

Kerja bagus! Berikut hal-hal yang telah Anda pelajari tentang penggunaan DISTINCT pada beberapa kolom:

  • DISTINCT berlaku untuk seluruh baris — semua kolom yang dipilih diperiksa secara bersamaan.
  • Sebuah baris hanya dihapus jika setiap kolomnya sama persis dengan baris yang sudah pernah ditemukan.
  • Menambahkan atau menghapus kolom dari daftar SELECT mengubah baris mana yang dianggap sebagai duplikat.
  • Anda dapat menggabungkan DISTINCT dengan WHERE dan ORDER BY dengan leluasa.
  • GROUP BY merupakan alternatif yang setara dan diperlukan jika Anda juga memerlukan agregat.

Menguasai DISTINCT multi-kolom memungkinkan Anda menjelajahi kombinasi unik secara efisien dalam kumpulan data apa pun.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “DISTINCT pada Beberapa Kolom” gratis?

Ya — teks lengkap “DISTINCT pada Beberapa Kolom” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “DISTINCT pada Beberapa Kolom”?

Keunikan berdasarkan kombinasi. Kamu berlatih SQL Academy 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 Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy 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 2 dari 4.

Berapa lama pelajaran “DISTINCT pada Beberapa Kolom” 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 Academy ini?

Ya. Setiap pelajaran SQL Academy 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. Dasar-Dasar SELECT DISTINCT
  2. DISTINCT pada Beberapa Kolom
  3. DISTINCT ON PostgreSQL
  4. Menghitung Nilai Unik
← Kembali ke SQL Academy