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!

MySQL - Group By Clause

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:

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

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