Panduan Awal Mengenai Klausul GROUP BY di MySQL
Hai sana, para ahli basis data masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dalam dunia klausul GROUP BY di MySQL. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - saya akan menjadi panduan ramah Anda, dan kita akan mengambil langkah ini secara bertahap. Pada akhir panduan ini, Anda akan dapat mengelompokkan data seperti seorang ahli!
Apa Itu Klausul GROUP BY MySQL?
Bayangkan Anda sedang mengatur sebuah perpustakaan besar. Anda tidak hanya meletakkan semua buku di satu rak, kan? Anda akan mengelompokkan mereka berdasarkan genre, penulis, atau tahun terbit. Itu tepat apa yang dilakukan klausul GROUP BY bagi data kita - itu membantu kita mengatur dan menyummarisasi informasi dalam cara yang berarti.
Klausul GROUP BY digunakan dalam query SQL untuk mengelompokkan baris yang memiliki nilai yang sama dalam kolom yang ditentukan. Biasanya digunakan bersamaan dengan fungsi agregat seperti COUNT(), MAX(), MIN(), SUM(), AVG() untuk melakukan perhitungan pada setiap kelompok baris.
mari masuk ke beberapa contoh untuk melihat bagaimana ini bekerja dalam praktek!
Menggunakan GROUP BY di Kolom Tunggal
Kita akan mulai dengan contoh sederhana. Bayangkan kita memiliki tabel bernama employees
dengan kolom employee_id
, name
, department
, dan salary
. Kita ingin mengetahui berapa banyak karyawan di setiap departemen.
Berikut cara kita melakukan itu:
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
Query ini akan memberikan hasil seperti ini:
department | employee_count |
---|---|
Sales | 10 |
Marketing | 5 |
IT | 8 |
mariuraikan apa yang terjadi di sini:
- Kita SELECT kolom
department
dan menggunakan fungsi COUNT(*) untuk menghitung baris. - Kita memberi nama yang ramah kepada hitungan tersebut dengan
AS employee_count
. - Klausul GROUP BY mengelompokkan hasilnya berdasarkan
department
.
Hasil menunjukkan berapa banyak karyawan yang ada di setiap departemen. Bagus, kan?
Menggunakan GROUP BY di Beberapa Kolom
Sekarang, mari kita naikkan tingkatannya. Apa bila kita ingin mengelompokkan berdasarkan lebih dari satu kolom? Tidak masalah! mari kita katakan tabel employees
kita juga memiliki kolom job_title
, dan kita ingin mengetahui berapa banyak karyawan yang memiliki setiap jabatan dalam setiap departemen.
Berikut cara kita melakukan itu:
SELECT department, job_title, COUNT(*) AS employee_count
FROM employees
GROUP BY department, job_title;
Ini mungkin memberikan hasil seperti ini:
department | job_title | employee_count |
---|---|---|
Sales | Sales Rep | 8 |
Sales | Sales Manager | 2 |
Marketing | Content Writer | 3 |
Marketing | SEO Specialist | 2 |
IT | Developer | 6 |
IT | IT Manager | 2 |
Sekarang kita dapat melihat tidak hanya berapa banyak karyawan di setiap departemen, tetapi bagaimana mereka tersebar di berbagai jabatan. Seperti mengatur perpustakaan kita berdasarkan genre dan kemudian penulis!
Menggunakan GROUP BY dengan Klausul ORDER BY
Biasanya, kita ingin hasil pengelompokan kita dalam urutan tertentu. Itu adalah saat klausul ORDER BY berguna. mari kita urutkan hasil sebelumnya berdasarkan departemen dan kemudian berdasarkan jumlah karyawan dalam urutan menurun:
SELECT department, job_title, COUNT(*) AS employee_count
FROM employees
GROUP BY department, job_title
ORDER BY department, employee_count DESC;
Ini akan memberikan:
department | job_title | employee_count |
---|---|---|
IT | Developer | 6 |
IT | IT Manager | 2 |
Marketing | Content Writer | 3 |
Marketing | SEO Specialist | 2 |
Sales | Sales Rep | 8 |
Sales | Sales Manager | 2 |
Sekarang hasil kita diatur secara rapih berdasarkan departemen, dan dalam setiap departemen, jabatan diurutkan berdasarkan jumlah karyawan dalam urutan menurun.
Menggunakan GROUP BY dengan Klausul HAVING
Kadang-kadang, kita ingin menyaring hasil pengelompokan kita. Kita dapat menggunakan klausul WHERE, tetapi itu menyaring baris sebelum mereka digabungkan. Apa bila kita ingin menyaring kelompok itu sendiri? Itu adalah saat klausul HAVING berguna.
mari kita katakan kita hanya ingin melihat departemen dengan lebih dari 5 karyawan:
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING employee_count > 5;
Ini mungkin memberikan hasil seperti ini:
department | employee_count |
---|---|
Sales | 10 |
IT | 8 |
Klausul HAVING menyaring kelompok yang hanya memiliki lebih dari 5 karyawan.
Klausul GROUP BY dalam Program Klien
Sekarang, mari kita praktikkan semua ini menggunakan program klien MySQL. Saya akan menggunakan klien perintah MySQL untuk contoh ini, tetapi prinsipnya sama untuk semua klien MySQL.
Pertama, mari kita buat tabel employees
dan masukkan beberapa data:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50),
job_title VARCHAR(50),
salary DECIMAL(10, 2)
);
INSERT INTO employees VALUES
(1, 'John Doe', 'Sales', 'Sales Rep', 50000),
(2, 'Jane Smith', 'Marketing', 'Content Writer', 55000),
(3, 'Bob Johnson', 'IT', 'Developer', 65000),
(4, 'Alice Brown', 'Sales', 'Sales Manager', 70000),
(5, 'Charlie Davis', 'IT', 'IT Manager', 75000);
Sekarang, mari kita jalankan query yang menggabungkan semua yang kita pelajari:
SELECT department, job_title, AVG(salary) AS avg_salary, COUNT(*) AS employee_count
FROM employees
GROUP BY department, job_title
HAVING avg_salary > 60000
ORDER BY avg_salary DESC;
Query ini:
- Mengelompokkan karyawan berdasarkan departemen dan jabatan
- Menghitung rata-rata gaji dan jumlah karyawan untuk setiap kelompok
- Menampilkan hanya kelompok dengan rata-rata gaji lebih dari $60,000
- Urutkan hasil berdasarkan rata-rata gaji dalam urutan menurun
Hasilnya mungkin tampak seperti ini:
department | job_title | avg_salary | employee_count |
---|---|---|---|
IT | IT Manager | 75000.00 | 1 |
Sales | Sales Manager | 70000.00 | 1 |
IT | Developer | 65000.00 | 1 |
Dan begitu juga! Kita telah melakukan perjalanan dari dasar GROUP BY ke kombinasi dengan klausal lain untuk analisis data yang kuat. Ingat, latihan membuat sempurna. Cobalah menulis query Anda sendiri, eksperimen dengan kombinasi yang berbeda, dan segera Anda akan menjadi administrator basis data yang ahli!
Selamat menjalankan query, dan semoga data Anda selalu teratur!
Credits: Image by storyset