MySQL - KLAUSE GROUP BY: Panduan untuk Pemula
Hai teman-teman, para ahli basis data masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dunia klausa GROUP BY di MySQL. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya – saya akan menjadi panduan yang ramah bagi Anda, dan kita akan mengambil langkah ini satu per satu. Pada akhir tutorial ini, Anda akan dapat mengelompokkan data seperti seorang profesional!
Apa Itu KLAUSE GROUP BY MySQL?
Bayangkan Anda sedang mengatur sebuah pustaka yang besar. Anda tidak akan sekedar meletakkan semua buku di satu rak, kan? Anda akan mengelompokkan mereka menurut genre, penulis, atau tahun terbit. Itu persis apa yang klausa GROUP BY lakukan untuk data kita – membantu kita mengatur dan menyummarisasi informasi dalam cara yang bermakna.
Klausa GROUP BY digunakan dalam query SQL untuk mengelompokkan baris yang memiliki nilai yang sama dalam kolom yang ditentukan. Ini sering digunakan bersamaan dengan fungsi agregat seperti COUNT(), MAX(), MIN(), SUM(), AVG() untuk melakukan perhitungan pada setiap kelompok baris.
Ayo masuk ke beberapa contoh untuk melihat bagaimana ini bekerja dalam praktek!
MySQL GROUP BY pada Kolom Tunggal
Kita akan mulai dengan contoh sederhana. Bayangkan kita memiliki tabel bernama employees
dengan kolom employee_id
, name
, department
, dan salary
. Kita ingin tahu berapa banyak karyawan ada di setiap departemen.
Ini adalah 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 untuk hitungan tersebut dengan
AS employee_count
. - Klausa GROUP BY mengelompokkan hasilnya berdasarkan
department
.
Hasilnya menunjukkan berapa banyak karyawan yang ada di setiap departemen. Bagus, kan?
MySQL GROUP BY pada Beberapa Kolom
Sekarang, mari kita tingkatkan. Apa bila kita ingin mengelompokkan lebih dari satu kolom? Tidak ada masalah! mari kita katakan bahwa tabel employees
kita juga memiliki kolom job_title
, dan kita ingin tahu berapa banyak karyawan memiliki setiap jabatan di setiap departemen.
Ini adalah 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 yang ada di setiap departemen, tapi juga bagaimana mereka tersebar menurut jabatan. Seperti mengatur pustaka kita menurut genre dan kemudian menurut penulis!
MySQL GROUP BY dengan KLAUSE ORDER BY
Seringkali, kita ingin hasil kelompokan kita dalam urutan tertentu. Itu di mana klausa ORDER BY berguna. mari kita urutkan hasil sebelumnya menurut departemen dan kemudian menurut 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 teratur secara rapi menurut departemen, dan dalam setiap departemen, jabatan diurutkan menurut jumlah karyawan dalam urutan menurun.
MySQL GROUP BY dengan KLAUSE HAVING
kadang-kadang, kita ingin menyaring hasil kelompokan kita. Kita bisa menggunakan klausa WHERE, tetapi itu menyaring baris sebelum mereka digabungkan. Apa bila kita ingin menyaring kelompok itu sendiri? Itu di mana klausa HAVING berguna.
mari kita katakan bahwa 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 |
Klausu HAVING menyaring kelompok yang hanya memiliki lebih dari 5 karyawan.
KLAUSE GROUP BY menggunakan Program Klien
Sekarang, mari kita praktikkan semua ini menggunakan program klien MySQL. Saya akan menggunakan klien perintah baris MySQL untuk contoh ini, tetapi prinsipnya sama untuk semua klien MySQL.
Pertama-tama, 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 menurut departemen dan jabatan
- Menghitung rata-rata gaji dan jumlah karyawan untuk setiap kelompok
- Menunjukkan hanya kelompok dengan rata-rata gaji lebih dari $60,000
- Mengurutkan hasil menurut rata-rata gaji dalam urutan menurun
Hasilnya mungkin terlihat 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 itu adalah nya! Kita telah berpergian dari dasar GROUP BY ke penggabungan dengan klausa lain untuk analisis data yang kuat. Ingat, latihan membuat sempurna. Cobalah menulis query Anda sendiri, eksperimen dengan kombinasi yang berbeda, dan segera Anda akan dapat mengelompokkan data seperti seorang administrator basis data yang berpengalaman!
Selamat mencari, dan may your data always be well-organized!
Credits: Image by storyset