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!

MySQL - Group By Clause

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:

  1. Kita SELECT kolom department dan menggunakan fungsi COUNT(*) untuk menghitung baris.
  2. Kita memberi nama yang ramah kepada hitungan tersebut dengan AS employee_count.
  3. 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:

  1. Mengelompokkan karyawan berdasarkan departemen dan jabatan
  2. Menghitung rata-rata gaji dan jumlah karyawan untuk setiap kelompok
  3. Menampilkan hanya kelompok dengan rata-rata gaji lebih dari $60,000
  4. 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