COALESCE di SQL

Mengambil nilai pertama yang tidak NULL dari daftar. Paling sering dipakai untuk mengganti NULL dengan nilai default.

Penjelasan sederhana

COALESCE mengambil nilai pertama yang tidak kosong dari daftar yang kamu berikan. Paling sering dipakai untuk mengganti NULL dengan nilai pengganti, misalnya teks "Belum ditempatkan" atau angka 0.

Fungsinya mirip IFERROR atau IFNA di Excel: kalau nilai utamanya tidak ada, pakai nilai cadangan.

Sintaks

COALESCE(nilai1, nilai2, ..., default)
BagianKeterangan
nilai1, nilai2Dicek berurutan dari kiri.
defaultDipakai jika semua nilai sebelumnya NULL.

Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.

Contoh COALESCE

Data contoh: karyawan, departemen

Tabel karyawan

idnamadept_idkotagajitgl_masukatasan_id
1 Andi Pratama 3 Bandung 12500000 2019-03-11 NULL
2 Bunga Lestari 1 Jakarta 9800000 2020-07-01 NULL
3 Candra Wijaya 3 Bandung 8200000 2021-02-15 1
4 Dewi Anggraini 2 Jakarta 7500000 2022-05-09 6
5 Eko Saputra 1 Jakarta 6900000 2023-01-16 2
6 Fajar Nugroho 2 Surabaya 11000000 2018-09-03 NULL
7 Gita Permata 3 Jakarta 8200000 2023-08-21 1
8 Hendra Gunawan NULL Medan 5500000 2024-04-02 NULL

Tabel departemen

idnama_deptlokasi
1 Keuangan Jakarta
2 Marketing Jakarta
3 IT Bandung
4 Legal Surabaya
query.sql
SELECT k.nama,
       COALESCE(d.nama_dept, 'Belum ditempatkan') AS departemen
FROM karyawan AS k
LEFT JOIN departemen AS d ON k.dept_id = d.id;
>_ Jalankan & ubah query ini di browser

Hasil 8 baris

namadepartemen
Andi Pratama IT
Bunga Lestari Keuangan
Candra Wijaya IT
Dewi Anggraini Marketing
Eko Saputra Keuangan
Fajar Nugroho Marketing
Gita Permata IT
Hendra Gunawan Belum ditempatkan

NULL di nama departemen Hendra diganti teks yang lebih jelas.

Cara kerjanya, langkah demi langkah

  1. LEFT JOIN menggabungkan karyawan dengan departemen. Hendra tidak punya departemen, jadi nama_dept-nya NULL.
  2. COALESCE(d.nama_dept, 'Belum ditempatkan'): untuk setiap baris, nama_dept dicek lebih dulu.
  3. Kalau terisi (misalnya IT), nilai itu yang dipakai. Kalau NULL, dipakai teks cadangan.
  4. Baris Hendra sekarang bertuliskan "Belum ditempatkan" alih-alih NULL.

Dipakai untuk apa di kantor?

  • Menampilkan 0 untuk pelanggan yang belum pernah belanja setelah LEFT JOIN.
  • Mengisi kolom kosong di laporan supaya tidak membingungkan pembaca.
  • Memilih nomor kontak yang tersedia: HP, kalau kosong telepon rumah, kalau kosong email.

Kesalahan yang sering terjadi

  • Memberi nilai pengganti dengan tipe berbeda dari kolomnya, misalnya teks untuk kolom angka. Beberapa database menolaknya.
Progres bab Logika & NULL 0/3 dipelajari
Lanjut: NULLIF

Belajar SQL bareng mentor

Hafal sintaks itu mudah. Menjawab pertanyaan bisnis, itu skill.

Private Class Python & SQL untuk Data: dari query dasar sampai JOIN dan studi kasus kerja, dengan kurikulum dan jadwal yang menyesuaikan kamu.

Lihat Private Class