0Pricing
SQL Academy · Pelajaran

Menghitung Nilai Unik

COUNT(DISTINCT ...) dalam praktik.

Menghitung Nilai Unik adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 Menghitung Nilai Unik?

Saat menggunakan COUNT(*), Anda menghitung setiap baris — termasuk duplikat. Namun, terkadang Anda hanya ingin mengetahui berapa banyak nilai unik yang terdapat dalam sebuah kolom.

Misalnya: dari berapa banyak negara pelanggan Anda berasal? Berapa banyak produk unik yang dipesan bulan lalu? Di sinilah COUNT(DISTINCT ...) digunakan.

Menyiapkan Tabel Sampel

Mari kita membuat tabel pesanan untuk berlatih. Setiap pesanan memiliki nama pelanggan, produk, dan negara.

Perhatikan bahwa beberapa pelanggan dan negara muncul lebih dari sekali — hal itu disengaja agar kita dapat melihat perbedaan antara menghitung semua baris dan menghitung nilai unik.

CREATE TABLE orders (
  id INT,
  customer VARCHAR(50),
  product VARCHAR(50),
  country VARCHAR(50)
);

INSERT INTO orders VALUES
  (1, 'Alice', 'Laptop', 'USA'),
  (2, 'Bob', 'Phone', 'UK'),
  (3, 'Alice', 'Tablet', 'USA'),
  (4, 'Carol', 'Laptop', 'Canada'),
  (5, 'Bob', 'Laptop', 'UK'),
  (6, 'Dave', 'Phone', 'USA'),
  (7, 'Carol', 'Phone', 'Canada'),
  (8, 'Eve', 'Tablet', 'Germany');

COUNT(*) vs COUNT(DISTINCT)

Jalankan kedua kueri dan bandingkan hasilnya. COUNT(*) mengembalikan 8 — satu untuk setiap baris. COUNT(DISTINCT pelanggan) mengembalikan 5 — karena hanya ada 5 pelanggan unik (Alice, Bob, Carol, Dave, Eve).

Inilah gagasan utamanya: COUNT(DISTINCT column) mengabaikan nilai yang berulang dan hanya menghitung nilai yang unik.

SELECT COUNT(*) AS total_orders,
       COUNT(DISTINCT customer) AS unique_customers
FROM orders;

Menghitung Negara Unik

Mari kita cari tahu dari berapa banyak negara berbeda pelanggan kita berasal. Meskipun tabel pesanan memiliki 8 baris, beberapa baris memiliki negara yang sama.

Hasilnya adalah 4 — USA, UK, Kanada, dan Jerman — terlepas dari berapa kali masing-masing negara muncul.

SELECT COUNT(DISTINCT country) AS unique_countries
FROM orders;

Menghitung Produk Unik

Kita dapat menerapkan pola yang sama pada kolom apa pun. Di sini kita menghitung berapa banyak produk berbeda yang telah dipesan.

Meskipun 'laptop' muncul tiga kali dan 'ponsel' muncul tiga kali, setiap produk hanya dihitung sekali. Jawabannya adalah 3: laptop, ponsel, tablet.

SELECT COUNT(DISTINCT product) AS unique_products
FROM orders;

Menggunakan COUNT(DISTINCT) dengan WHERE

Anda dapat menggabungkan COUNT(DISTINCT ...) dengan klausa WHERE untuk mempersempit baris sebelum menghitung. Di sini kita menghitung produk unik yang dipesan hanya oleh pelanggan dari USA.

Hanya baris dengan negara = 'USA' yang dipertimbangkan, lalu kita menghitung produk unik di antara baris-baris tersebut.

SELECT COUNT(DISTINCT product) AS usa_unique_products
FROM orders
WHERE country = 'USA';

COUNT(DISTINCT) dengan GROUP BY

Saat dipasangkan dengan GROUP BY, COUNT(DISTINCT ...) memberikan jumlah unik per kelompok. Kueri ini menjawab pertanyaan: untuk setiap negara, berapa banyak pelanggan unik yang melakukan pemesanan?

Setiap kelompok diproses secara terpisah, sehingga duplikat dalam sebuah kelompok dihapus sebelum penghitungan.

SELECT country,
       COUNT(DISTINCT customer) AS unique_customers
FROM orders
GROUP BY country
ORDER BY unique_customers DESC;

Menghitung Nilai Unik dalam Beberapa Kolom

Anda dapat menggunakan beberapa ekspresi COUNT(DISTINCT ...) dalam SELECT yang sama. Cara ini memberikan gambaran singkat tentang kardinalitas — berapa banyak nilai unik yang dimiliki setiap kolom — semuanya dalam satu kueri.

Kardinalitas merupakan metrik yang berguna saat menjelajahi kumpulan data baru.

SELECT COUNT(DISTINCT customer) AS unique_customers,
       COUNT(DISTINCT product)  AS unique_products,
       COUNT(DISTINCT country)  AS unique_countries
FROM orders;

Cara NULL Diperlakukan

Sama seperti COUNT(kolom) biasa, COUNT(DISTINCT column) mengabaikan nilai NULL. NULL tidak dihitung sebagai nilai unik.

Dalam contoh ini, dua baris memiliki negara NULL. Hasilnya tetap 4 negara berbeda yang bukan NULL, bukan 5.

INSERT INTO orders VALUES
  (9,  'Frank', 'Phone',  NULL),
  (10, 'Grace', 'Laptop', NULL);

SELECT COUNT(DISTINCT country) AS unique_countries_no_null
FROM orders;

Membandingkan COUNT(*), COUNT(kolom), dan COUNT(DISTINCT kolom)

Akan membantu jika kita melihat ketiga bentuk COUNT secara berdampingan:

  • COUNT(*) — menghitung setiap baris, termasuk NULL
  • COUNT(negara) — menghitung baris yang negaranya bukan NULL
  • COUNT(DISTINCT negara) — menghitung nilai negara unik yang bukan NULL

Jalankan ini pada tabel yang telah diperbarui (sekarang 10 baris, 2 di antaranya memiliki negara NULL) untuk memastikan perbedaannya.

SELECT COUNT(*)                AS total_rows,
       COUNT(country)          AS non_null_countries,
       COUNT(DISTINCT country) AS unique_countries
FROM orders;

Kasus Penggunaan di Dunia Nyata: Pengguna Aktif Harian

Salah satu penggunaan COUNT(DISTINCT ...) yang paling umum dalam analitik adalah menghitung Pengguna Aktif Harian (DAU). Anda memiliki catatan peristiwa dan ingin mengetahui berapa banyak pengguna unik yang aktif setiap hari.

Kelompokkan berdasarkan tanggal dengan GROUP BY dan gunakan COUNT(DISTINCT ID pengguna) untuk mendapatkan jumlah pengguna unik per hari — duplikat dari pengguna yang sama karena mengeklik berkali-kali akan otomatis dikecualikan.

CREATE TABLE user_events (
  event_date DATE,
  user_id    INT
);

INSERT INTO user_events VALUES
  ('2024-01-01', 1), ('2024-01-01', 2), ('2024-01-01', 1),
  ('2024-01-02', 2), ('2024-01-02', 3), ('2024-01-02', 2),
  ('2024-01-03', 1), ('2024-01-03', 4);

SELECT event_date,
       COUNT(DISTINCT user_id) AS daily_active_users
FROM user_events
GROUP BY event_date
ORDER BY event_date;

Pemeriksaan Cepat

Uji pemahaman Anda tentang COUNT(DISTINCT ...) dengan pertanyaan ini.

Ringkasan Pelajaran

Kerja bagus! Berikut ringkasan hal-hal yang telah Anda pelajari tentang COUNT(DISTINCT ...):

  • COUNT(DISTINCT column) hanya menghitung nilai unik yang bukan NULL dalam sebuah kolom.
  • Fungsi ini berbeda dari COUNT(*) (semua baris) dan COUNT(column) (baris yang bukan NULL).
  • Fungsi ini dapat digunakan bersama WHERE untuk menyaring baris sebelum penghitungan.
  • Fungsi ini dapat digunakan bersama GROUP BY untuk menghitung nilai unik per kelompok.
  • Nilai NULL selalu dikecualikan dari penghitungan unik.
  • Beberapa ekspresi COUNT(DISTINCT ...) dapat muncul dalam SELECT yang sama.
  • Penggunaan di dunia nyata yang umum mencakup penghitungan pengguna, produk, negara, dan sesi unik.

Menguasai fungsi ini memberi Anda alat yang andal untuk eksplorasi data dan analitik.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menghitung Nilai Unik” gratis?

Ya — teks lengkap “Menghitung Nilai Unik” 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 “Menghitung Nilai Unik”?

COUNT(DISTINCT ...) dalam praktik. 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 4 dari 4.

Berapa lama pelajaran “Menghitung Nilai Unik” 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