SQL - klausa HAVING

Hai, para ahli SQL masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dunia klausa HAVING di SQL. Sebagai guru komputer tetangga yang ramah, saya disini untuk menghidahkan Anda melalui petualangan ini, langkah demi langkah. Jadi, ambil notepad virtual Anda, dan mari kita masuk ke dalam!

SQL - Having Clause

Klausa HAVING di SQL

Bayangkan Anda mencoba mengatur pesta, tetapi Anda hanya ingin mengundang teman yang memiliki lebih dari lima teman bersama dengan Anda. Itu tepat apa yang klausa HAVING lakukan di SQL - itu membantu kita menyaring hasil grup berdasarkan syarat tertentu.

Klausa HAVING seperti seorang bouncer di pintu pesta data Anda. Dia memutuskan siapa grup data yang boleh masuk berdasarkan aturan yang Anda tetapkan. Mari kita lihat contoh sederhana:

SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;

Dalam contoh ini, kita melihat rata-rata gaji di setiap departemen, tetapi kita hanya ingin melihat departemen di mana rata-rata gaji lebih dari $50.000. Klausa HAVING adalah bouncer kita, memeriksa setiap grup (departemen) dan hanya membiarkan yang memenuhi kriteria kita masuk.

HAVING dengan Klausa GROUP BY

Klausa HAVING sering digunakan bersamaan dengan GROUP BY, seperti dua teman terbaik yang selalu bersama. Sedangkan GROUP BY mengatur data kita ke dalam grup, HAVING menyaring grup ini berdasarkan syarat.

Mari kita lihat contoh lain:

SELECT product_category, COUNT(*) as product_count
FROM products
GROUP BY product_category
HAVING COUNT(*) > 10
ORDER BY product_count DESC;

Ini apa yang terjadi:

  1. Kita mengelompokkan produk berdasarkan kategori mereka.
  2. Kita menghitung berapa banyak produk ada di setiap kategori.
  3. Klausa HAVING hanya membiarkan kategori yang memiliki lebih dari 10 produk.
  4. Akhirnya, kita mengurutkan hasilnya berdasarkan jumlah produk dalam urutan turun.

Itu seperti mengatur lemari pakaian Anda, tetapi hanya menjaga bagian yang memiliki lebih dari 10 item, dan kemudian mengatur mereka dari yang paling banyak ke yang paling sedikit.

HAVING dengan Klausa ORDER BY

Seperti yang Anda lihat dalam contoh sebelumnya, HAVING juga bermain baik dengan ORDER BY. Mari kita lihat contoh lain:

SELECT customer_id, SUM(order_total) as total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(order_total) > 1000
ORDER BY total_spent DESC;

Query ini seperti mencari pelanggan VIP Anda:

  1. Kita mengelompokkan pesanan berdasarkan pelanggan.
  2. Kita menjumlahkan total yang dihabiskan oleh setiap pelanggan.
  3. Klausa HAVING menyaring pelanggan yang menghabiskan lebih dari $1000.
  4. Kita kemudian mengurutkan pelanggan VIP ini dari pengguna yang paling tinggi ke yang terendah.

Klausa HAVING dengan Fungsi COUNT()

Fungsi COUNT() seperti teman setia klausa HAVING, selalu siap membantu menghitung hal-hal. Ini contohnya:

SELECT author, COUNT(book_id) as book_count
FROM books
GROUP BY author
HAVING COUNT(book_id) >= 5
ORDER BY book_count DESC;

Query ini mencari penulis yang produktif:

  1. Kita mengelompokkan buku berdasarkan penulis.
  2. Kita menghitung berapa banyak buku yang ditulis oleh setiap penulis.
  3. Klausa HAVING menjaga hanya penulis dengan 5 atau lebih buku.
  4. Kita mengurutkan hasil untuk melihat penulis yang paling produktif pertama.

Klausa HAVING dengan Fungsi AVG()

AVG() adalah teman lain yang bagus untuk HAVING. Mari kita lihat mereka dalam aksi:

SELECT department, AVG(performance_score) as avg_score
FROM employee_performance
GROUP BY department
HAVING AVG(performance_score) > 8.5
ORDER BY avg_score DESC;

Query ini seperti mencari departemen dengan kinerja bintang:

  1. Kita mengelompokkan skor kinerja berdasarkan departemen.
  2. Kita menghitung skor rata-rata untuk setiap departemen.
  3. Klausa HAVING menjaga hanya departemen dengan skor rata-rata di atas 8.5.
  4. Kita mengurutkan hasil untuk melihat departemen yang paling tinggi performannya pertama.

Klausa HAVING dengan Fungsi MAX()

Akhirnya, mari kita lihat bagaimana HAVING bekerja dengan MAX():

SELECT product_category, MAX(price) as highest_price
FROM products
GROUP BY product_category
HAVING MAX(price) > 1000
ORDER BY highest_price DESC;

Query ini mencari kategori produk mewah:

  1. Kita mengelompokkan produk berdasarkan kategori.
  2. Kita menemukan harga maksimum di setiap kategori.
  3. Klausa HAVING menjaga hanya kategori yang memiliki setidaknya satu produk dengan harga di atas $1000.
  4. Kita mengurutkan hasil untuk melihat kategori dengan item termahal pertama.

Dan begitu Anda mendapatkannya, teman-teman! Anda baru saja belajar tentang klausa HAVING dan teman-temannya di SQL. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba query ini. Sebelum Anda tahu, Anda akan menulis query SQL kompleks seperti seorang ahli!

Berikut adalah tabel rujukan cepat dari metode yang kita bahas:

Metode Deskripsi Contoh
HAVING Menyaring hasil grup HAVING AVG(salary) > 50000
GROUP BY Mengelompokkan baris dengan nilai yang sama GROUP BY department
ORDER BY Mengurutkan hasil ORDER BY total_spent DESC
COUNT() Menghitung jumlah baris HAVING COUNT(book_id) >= 5
AVG() Menghitung rata-rata dari set nilai HAVING AVG(performance_score) > 8.5
MAX() Mengembalikan nilai maksimum dalam set HAVING MAX(price) > 1000

Selamat mengekueri, dan mayat data Anda selalu bersih dan query Anda efisien!

Credits: Image by storyset