SQL - klausa HAVING
Hai, para para SQL ahli masa depan! Hari ini, kita akan memulakan perjalanan menarik ke dalam dunia klausa SQL HAVING. Sebagai guru komputer tetangga yang baik, saya di sini untuk menghidangkan anda melalui pengembaraan ini, langkah demi langkah. Jadi, pegang notepad maya anda, dan mari kita masuk!
Klausa HAVING SQL
Imajinalkan anda cuba untuk menguruskan satu parti, tetapi anda hanya mahu menjemput rakan yang mempunyai lebih daripada lima rakan bersama-sama dengan anda. Itu adalah exactly apa yang klausa HAVING lakukan dalam SQL - ia membantu kita menyaring hasil kumpulan berdasarkan syarat khusus.
Klausa HAVING adalah seperti pengawal pintu di parti data anda. Ia membuat keputusan tentang mana kumpulan data yang boleh masuk berdasarkan peraturan yang anda tetapkan. Mari kita lihat contoh yang mudah:
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
Dalam contoh ini, kita menyelidik gaji purata setiap departemen, tetapi kita hanya mahu melihat departemen di mana gaji purata lebih daripada $50,000. Klausa HAVING adalah pengawal pintu kita, menyaring setiap kumpulan (departemen) dan hanya membenarkan yang memenuhi kriteria kita.
HAVING dengan Klausa GROUP BY
Klausa HAVING kerap digunakan bersama-sama dengan GROUP BY, seperti dua kawan terbaik yang selalu bersama. Sementara GROUP BY menguruskan data kita ke dalam kumpulan, HAVING menyaring kumpulan 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 adalah apa yang berlaku:
- Kita mengumpulkan produk berdasarkan kategori mereka.
- Kita menghitung berapa banyak produk dalam setiap kategori.
- Klausa HAVING hanya membenarkan kategori-kategori yang mempunyai lebih daripada 10 produk.
- Akhirnya, kita mengurutkan hasilnya berdasarkan jumlah produk dalam urutan turun.
Itu seperti menguruskan lemari pakaian anda, tetapi hanya menyimpan seksyen yang mempunyai lebih daripada 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 adalah seperti mencari pelanggan VIP anda:
- Kita kumpulkan order berdasarkan pelanggan.
- Kita menjumlahkan berapa banyak setiap pelanggan telah belanjakan.
- Klausa HAVING menyaring pelanggan yang telah belanjakan lebih daripada $1000.
- Kemudian kita urutkan pelanggan VIP ini dari yang belanjakan paling tinggi ke yang paling rendah.
Klausa HAVING dengan Fungsi COUNT()
Fungsi COUNT() adalah seperti teman setia kepada HAVING, sentiasa bersedia untuk membantu menghitung hal-hal. Ini adalah contoh:
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 pengarang yang produktif:
- Kita kumpulkan buku berdasarkan pengarang.
- Kita menghitung berapa banyak buku yang ditulis oleh setiap pengarang.
- Klausa HAVING hanya menjaga pengarang yang mempunyai 5 atau lebih buku.
- Kita urutkan hasil untuk melihat pengarang yang paling produktif dahulu.
Klausa HAVING dengan Fungsi AVG()
AVG() adalah teman lain yang bagus kepada 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 adalah seperti mencari departemen dengan penunjuk prestasi bintang:
- Kita kumpulkan skor prestasi berdasarkan departemen.
- Kita menghitung skor purata untuk setiap departemen.
- Klausa HAVING hanya menjaga departemen dengan skor purata di atas 8.5.
- Kita urutkan hasil untuk melihat departemen yang paling tinggi prestasinya dahulu.
Klausa HAVING dengan Fungsi MAX()
Terakhir tetapi bukan kurang penting, 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:
- Kita kumpulkan produk berdasarkan kategori.
- Kita mencari harga maksimum dalam setiap kategori.
- Klausa HAVING hanya menjaga kategori-kategori yang mempunyai sekurang-kurangnya satu produk dengan harga lebih daripada $1000.
- Kita urutkan hasil untuk melihat kategori dengan item-termahal dahulu.
Dan begitu juga, teman-teman! Anda telah belajar tentang klausa HAVING dan kawan-kawan terbaiknya dalam SQL. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba query ini. Sebelum anda tahu, anda akan menulis query SQL kompleks seperti seorang pro!
Berikut adalah tabel rujukan cepat bagi kaedah yang kita telah covering:
Kaedah | Description | Example |
---|---|---|
HAVING | Menyaring hasil kumpulan | HAVING AVG(salary) > 50000 |
GROUP BY | Mengumpulkan baris dengan nilai yang sama | GROUP BY department |
ORDER BY | Mengurutkan set hasil | ORDER BY total_spent DESC |
COUNT() | Menghitung bilangan baris | HAVING COUNT(book_id) >= 5 |
AVG() | Mengira purata set nilai | HAVING AVG(performance_score) > 8.5 |
MAX() | Mengembalikan nilai maksimum dalam set | HAVING MAX(price) > 1000 |
Bersenang hati mencari, dan moga data anda sentiasa bersih dan query anda efisien!
Credits: Image by storyset