1. Apa Itu Klausa HAVING?
Klausa HAVING adalah sintaks SQL yang digunakan untuk menerapkan kondisi pada hasil agregasi setelah data dikelompokkan. Klausa ini biasanya dipakai bersama klausa GROUP BY dan berperan sebagai filter data setelah agregasi. Dengan menggunakan klausa HAVING, Anda dapat mengekstrak hanya grup‑grup yang memenuhi kriteria tertentu.
Sebagai contoh, klausa HAVING dipakai ketika Anda ingin mengekstrak pelanggan yang total penjualannya melebihi jumlah tertentu atau grup yang rata‑rata nilainya di atas ambang batas tertentu. Sementara klausa WHERE menerapkan kondisi pada baris‑baris individual sebelum agregasi, klausa HAVING menerapkan kondisi pada hasil setelah agregasi.
Contoh Penggunaan Klausa HAVING
Sebagai contoh, kueri berikut mengekstrak pelanggan yang total penjualannya melebihi 10.000.
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
GROUP BY customer_id
HAVING SUM(sales) > 10000;
Kueri ini menggunakan fungsi SUM untuk menghitung total penjualan tiap pelanggan dan mengekstrak hanya pelanggan yang totalnya melebihi 10.000.
2. Sintaks Dasar dan Penggunaan Klausa HAVING
Sintaks dasar klausa HAVING adalah sebagai berikut:
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;
Sintaks ini mengelompokkan data menggunakan klausa GROUP BY dan menyaring hasil agregasi dengan menentukan kondisi pada klausa HAVING. Misalnya, kueri berikut mengekstrak pelanggan yang telah melakukan lima atau lebih pesanan dari tabel orders.
SELECT customer_id, COUNT(order_id) AS order_count
FROM orders_table
GROUP BY customer_id
HAVING COUNT(order_id) >= 5;
Di sini, fungsi COUNT digunakan untuk menghitung jumlah pesanan per pelanggan, dan hanya pelanggan dengan lima atau lebih pesanan yang disaring.
3. Aplikasi Praktis Klausa HAVING
Klausa HAVING adalah alat yang kuat untuk analisis data lanjutan ketika digabungkan dengan fungsi agregat. Berikut beberapa contoh konkret cara penerapannya.
Contoh 1: Menyaring Berdasarkan Total Penjualan
Untuk mengekstrak produk yang total penjualannya melebihi 10.000, gunakan fungsi SUM seperti di bawah ini.
SELECT product_id, SUM(sales) AS total_sales
FROM products_table
GROUP BY product_id
HAVING SUM(sales) > 10000;
Kueri ini menghitung total penjualan tiap produk dan mengekstrak hanya produk yang totalnya melebihi 10.000.
Contoh 2: Menyaring Berdasarkan Jumlah Pesanan
Jika seorang pelanggan tertentu telah melakukan lebih dari 10 pesanan, ekstrak pelanggan tersebut sebagai berikut.
SELECT customer_id, COUNT(order_id) AS order_count
FROM orders_table
GROUP BY customer_id
HAVING COUNT(order_id) > 10;
Kueri ini menghitung jumlah pesanan per pelanggan dan mengekstrak hanya pelanggan yang telah melakukan lebih dari 10 pesanan.
4. Perbedaan Antara HAVING dan WHERE
Baik klausa HAVING maupun klausa WHERE digunakan untuk menyaring data, tetapi keduanya berbeda dalam waktu penerapannya.
Perbedaan Waktu Penerapan
- Klausa WHERE : Diterapkan sebelum pengelompokan dan menyaring baris‑baris individual.
- Klausa HAVING : Diterapkan setelah pengelompokan dan menyaring hasil agregasi.
Sebagai contoh, dalam kueri yang menggabungkan klausa WHERE dan HAVING, klausa WHERE pertama‑tama menyaring data di mana penjualan ≥ 1.000, kemudian klausa HAVING mengekstrak hasil di mana total penjualan melebihi 5.000.
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
WHERE sales >= 1000
GROUP BY customer_id
HAVING SUM(sales) > 5000;
Pada kueri ini, GROUP BY dan HAVING diterapkan pada data yang telah disaring oleh klausa WHERE, mengekstrak hanya pelanggan yang total penjualannya ≥ 5.000.

5. Catatan Penting Saat Menggunakan Klausa HAVING
Harus Digunakan Bersama Fungsi Agregat
Karena klausa HAVING menyaring hasil yang teragregasi, ia harus digunakan bersama fungsi agregat seperti SUM atau COUNT. Untuk kondisi yang berlaku pada baris individual, lebih tepat menggunakan klausa WHERE.
Menggunakan Alias
Dalam klausa HAVING, Anda dapat menulis kondisi menggunakan alias yang ditentukan dengan AS. Misalnya, Anda dapat memberikan alias pada total penjualan dan menggunakannya dalam kondisi seperti yang ditunjukkan di bawah.
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
GROUP BY customer_id
HAVING total_sales > 10000;
Kueri ini mengekstrak pelanggan yang total penjualannya melebihi 10.000.
6. Ringkasan: Cara Efektif Menggunakan Klausa HAVING
Klausa HAVING adalah alat yang kuat yang memungkinkan penyaringan fleksibel data yang teragregasi dengan menerapkan kondisi pada hasil ringkasan. Khususnya, ketika menganalisis data teragregasi seperti total penjualan atau jumlah pesanan, penggunaan klausa HAVING memungkinkan analisis data yang efisien. Dengan memahami perbedaan antara klausa HAVING dan klausa WHERE serta menggunakannya secara tepat bersama‑sama, Anda dapat memaksimalkan fleksibilitas kueri SQL Anda.


