ID (Indonesia) Translation

MySQL - klausa HAVING

Halo sana, para entusiastik basisdata yang sedang berkembang! Hari ini, kita akan mendalamkan salah satu fitur yang kuat MySQL: klausa HAVING. Seperti guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya sangat gembira untuk memandu Anda dalam perjalanan ini. Jangan khawatir jika Anda baru belajar pemrograman; kita akan mengambil langkah-langkah perlahan-lahan, dan segera Anda akan dapat menyaring data seperti seorang ahli!

MySQL - Having Clause

Klausa HAVING MySQL

mari kita mulai dari dasar. Klausa HAVING mirip dengan seorang bouncer di klub, tetapi bukan untuk memeriksa ID, melainkan untuk memeriksa kelompok data. Itu digunakan bersama klausa GROUP BY untuk menyaring rekord yang dikelompokkan yang memenuhi syarat tertentu.

Bayangkan Anda menenggelamkan koleksi buku komik Anda. Anda telah mengelompokkannya berdasarkan superhero, tapi sekarang Anda hanya ingin melihat pahlawan yang muncul di lebih dari lima komik. Itu di mana klausa HAVING masuk!

Berikut adalah sintaksis dasar:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);

mari kita lihat contoh sederhana. Misalnya, kita memiliki tabel yang disebut employees:

SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department
HAVING employee_count > 10;

Query ini akan menunjukkan semua departemen dengan lebih dari 10 karyawan. Klausa HAVING memeriksa employee_count setelah pengelompokan selesai.

Kapan menggunakan WHERE vs HAVING

Anda mungkin berpikir, "Tunggu sebentar, pak! Bukan ini apa yang WHERE lakukan?" Pertanyaan yang bagus! Berikut adalah perbedaan kunci:

  • WHERE menyaring baris individual sebelum pengelompokan
  • HAVING menyaring kelompok setelah pengelompokan

Pertimbangkan WHERE sebagai pemeriksaan keamanan awal, dan HAVING sebagai daftar VIP di pesta setelahnya!

Klausa HAVING dengan klausa ORDER BY

Sekarang, mari kita tambahkan sedikit urutan pada hasil kita. Klausa ORDER BY mirip dengan petugas antri di bioskop, memastikan bahwa semua orang berada di kursi yang benar.

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

Query ini akan menunjukkan departemen dengan rata-rata gaji lebih dari $50.000, diurutkan dari yang tertinggi ke yang terendah. Itu seperti membuat daftar "high roller" untuk perusahaan Anda!

Klausa HAVING dengan fungsi COUNT()

Fungsi COUNT() adalah kalkulator yang dapat Andaandalkan. mari kita gunakan itu untuk menemukan manajer yang sibuk:

SELECT manager_id, COUNT(*) as team_size
FROM employees
GROUP BY manager_id
HAVING team_size > 5
ORDER BY team_size DESC;

Query ini mencantumkan manajer yang memiliki lebih dari 5 anggota tim. Itu seperti mengetahui guru mana yang memiliki kelas terbesar!

Klausa HAVING dengan fungsi AVG()

AVG() adalah kalkulator rata-rata yang ramah. mari kita gunakan itu untuk menemukan kategori produk yang berprestasi tinggi:

SELECT category, AVG(price) as avg_price
FROM products
GROUP BY category
HAVING avg_price > 100
ORDER BY avg_price DESC;

Query ini menunjukkan kategori produk dengan rata-rata harga lebih dari $100. Itu seperti mengidentifikasi bagian mewah di toko departemen!

Klausa HAVING dengan fungsi MAX()

MAX() seperti juara lompat tinggi dalam data Anda. mari kita gunakan itu untuk menemukan produk termahal dalam setiap kategori:

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

Query ini mencantumkan kategori yang memiliki setidaknya satu produk dengan harga lebih dari $1000. Itu seperti menemukan "barang termahal" di setiap departemen!

Klausa HAVING menggunakan Program Klien

Sekarang, mari kita praktikkan semua ini menggunakan program klien MySQL. mari kita gunakan contoh klasik basisdata toko buku:

-- Buat tabel books
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100),
author VARCHAR(50),
genre VARCHAR(50),
price DECIMAL(5,2),
sold INT
);

-- Masukkan beberapa data contoh
INSERT INTO books (title, author, genre, price, sold) VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', 'Classic', 12.99, 1000),
('To Kill a Mockingbird', 'Harper Lee', 'Classic', 14.99, 1500),
('1984', 'George Orwell', 'Sci-Fi', 11.99, 2000),
('Pride and Prejudice', 'Jane Austen', 'Romance', 9.99, 1800),
('The Hobbit', 'J.R.R. Tolkien', 'Fantasy', 19.99, 2500),
('Harry Potter', 'J.K. Rowling', 'Fantasy', 24.99, 5000),
('The Catcher in the Rye', 'J.D. Salinger', 'Classic', 13.99, 1200);

-- Sekarang mari kita gunakan HAVING untuk analisis penjualan buku kita
SELECT genre, AVG(price) as avg_price, SUM(sold) as total_sold
FROM books
GROUP BY genre
HAVING total_sold > 2000
ORDER BY total_sold DESC;

Query ini akan menunjukkan genre mana saja yang menjual lebih dari 2000 buku secara total, bersama dengan harga rata-ratanya. Itu seperti menemukan bagian terlaris di toko bukunya!

Berikut adalah penjelasan singkat apa yang terjadi:

  1. Kita memilih genre, menghitung harga rata-rata, dan menjumlahkan penjualan total.
  2. Kita grupkan hasilnya berdasarkan genre.
  3. Klausa HAVING menyaring kelompok mana saja dengan penjualan total 2000 atau kurang.
  4. Akhirnya, kita urutkan hasilnya berdasarkan penjualan total dalam urutan menurun.

Dan itu adalah! Anda baru saja menggunakan klausa HAVING untuk mendapatkan wawasan berharga dari data Anda. Ingat, latihan membuat ahli, jadi jangan khawatir untuk mencoba query Anda sendiri.

Berikut adalah tabel referensi singkat dari fungsi yang kita gunakan dengan HAVING:

Fungsi Deskripsi Contoh
COUNT() Menghitung jumlah baris dalam kelompok HAVING COUNT(*) > 5
AVG() Menghitung rata-rata dari set nilai HAVING AVG(price) > 100
MAX() Mengembalikan nilai maksimum dalam set HAVING MAX(price) > 1000
SUM() Menghitung jumlah nilai dalam set HAVING SUM(sold) > 2000

Selamat berquery, para ahli data masa depan!

Credits: Image by storyset