Tutorial ini adalah bagian dari seri Belajar Query SQL Dasar Menggunakan MySQL. Dalam tutorial ini, kita akan membahas query SQL untuk melakukan pengelompokan baris tabel di MySQL menggunakan klausa GROUP BY dengan fungsi agregat. Anda juga dapat mengikuti Menggunakan Fungsi Agregat (SUM, AVG, MAX, MIN, COUNT, DISTINCT) di MySQL untuk mempelajari fungsi agregat.
Kelompokkan Berdasarkan Kueri
GROUP BY klausa dapat digunakan untuk melakukan pengelompokan baris tabel. Ini juga dapat digunakan dengan fungsi agregat untuk menghasilkan laporan dan mengumpulkan data statistik.
# GROUP BY - Syntax
SELECT column_1, column_2, ..., [<aggregate function> AS <column>] FROM `table_name` GROUP BY column_1, column_2, ...;
Penjelasan Kueri
GROUP BY klausa dapat digunakan untuk mengelompokkan baris dengan menentukan kolom untuk membentuk himpunan baris.
Kita dapat menggunakan fungsi agregat untuk secara efektif menggunakan klausa GROUP BY untuk menghasilkan laporan dan mengumpulkan data statistik.
Pengelompokan dapat diterapkan pada beberapa kolom di mana kolom pertama akan membentuk grup utama dan kolom berikutnya akan membentuk sub-grup.
Contoh
Bagian ini memberikan contoh untuk melakukan pengelompokan menggunakan klausa GROUP BY dengan dan tanpa fungsi agregasi. Gunakan kueri yang disebutkan di bawah ini untuk membuat tabel pengguna yang memiliki kolom id, nama depan, nama belakang, usia, dan aktif untuk menyimpan data pengguna.
# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`age` SMALLINT(6) NOT NULL DEFAULT 0,
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));
Kueri yang disebutkan di bawah ini dapat digunakan untuk menyisipkan data uji ke tabel pengguna.
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `age`, `active` ) VALUES
( 1, 'John', 'Smith', 18, 1 ),
( 2, 'Rick', 'Jones', 19, 1 ),
( 3, 'John', 'Ponting', 16, 0 ),
( 4, 'Harsh', 'Upadhyay', 20, 1 ),
( 5, 'Tajwinder', 'Singh', 18, 0 );
Kueri yang disebutkan di atas akan menyisipkan 5 baris dalam tabel yang memiliki id, nama depan, nama belakang, dan kolom aktif untuk mewakili 5 pengguna yang berbeda.
Sekarang kita akan menggunakan klausa GROUP BY tanpa fungsi agregat untuk mengelompokkan baris. Hal ini dapat dilakukan dengan menggunakan klausa GROUP BY di MySQL seperti yang ditunjukkan di bawah ini.
# GROUP BY - Generate the set of active values
SELECT active from user GROUP BY active;
# Result
1
0
# GROUP BY - Generate the set of first name
SELECT first_name from user GROUP BY first_name;
# Result
John
Rick
Harsh
Tajwinder
Kueri yang disebutkan di atas mengembalikan hasil yang ditetapkan dengan mengelompokkan baris menggunakan klausa GROUP BY. Sekarang kita akan mengelompokkan baris dengan fungsi agregat seperti yang ditunjukkan di bawah ini.
# GROUP BY - Get the maximum age of all users with specific first name
SELECT first_name, MAX(age) AS max_age from user GROUP BY first_name;
# Result
John 18
Rick 19
Harsh 20
Tajwinder 18
# GROUP BY - Get the average age of all users with specific first name
SELECT first_name, AVG(age) AS avg_age from user GROUP BY first_name;
# Result
John 17.0000
Rick 19.0000
Harsh 20.0000
Tajwinder 18.0000
Ini adalah bagaimana kita dapat menggunakan klausa GROUP BY dengan dan tanpa fungsi agregat untuk mengelompokkan baris tabel untuk kolom tertentu.