Pada tutorial kali ini kita akan membahas tentang bagaimana melakukan GROUP BY
MySQL, fungsi GROUP BY
ini seperti namanya, digunakan untuk menyatukan data yang sama berdasarkan parameter grup yang dipilih sehingga seluruh data yang sama menjadi satu grup.
Berikut ini adalah contoh query penggunaan GROUP BY di MySQL…
SELECT
col1, col2, ...
FROM
table_name,
WHERE
conditions
GROUP BY
col1, col2,...
Dari contoh query diatas penggunaan GROUP BY
MySQL digunakan setelah sintaks FROM
dan juga WHERE
namun jika anda menggunakan HAVING
maka digunakan sebelum HAVING
.
Didalam prakteknya query GROUP BY
bisa disandingkan dengan fungsi agregat seperti SUM
, AVG
, MAX
, MIN
, dan juga COUNT
yang biasanya digunakan untuk menghitung total keseluruhan data tertentu.
Query Group By MySQL
Untuk lebih memahami bagaimana penggunaan GROUP BY
maka kita memerlukan beberapa data sample sebagai bahan praktikum, jadi penulis sudah menyiapkan data table beserta dengan isinya yang bisa kita gunakan.
Buatlah dua buah tabel dengan query dibawah ini…
CREATE TABLE products(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
CREATE TABLE orders(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
product_id INT NOT NULL,
quantity INT NOT NULL,
status VARCHAR(10) NOT NULL
);
Code language: PHP (php)
Setelah itu tambahkan data ke dalam dua tabel yang sudah dibuat dengan menggunakan query dibawah ini.
INSERT INTO products(name, price) VALUES ('Mouse', 50000),
('Keyboard', 100000),
('Monitor', 1000000);
INSERT INTO orders(product_id, quantity, status)
VALUES (1, 2, 'In Process'),
(2, 1, 'Shipped'),
(1, 3, 'Shipped'),
(3, 1, 'Shipped'),
(1, 1, 'In Process'),
(3, 2, 'In Process'),
(1, 5, 'Shipped'),
(2, 2, 'Shipped');
Code language: JavaScript (javascript)
Dari data diatas kita memiliki tabel orders
dengan data yang apabila kita lakukan query SELECT
dengan query dibawah ini…
SELECT * FROM orders
Maka akan menampilkan data sebagai berikut…
Jika data dirasa sudah sesuai selanjutnya kita akan melakukan beberapa percobaan query penggunaan GROUP BY
MySQL.
Query Dasar GROUP BY MySQL
Untuk menggunaan dasar query GROUP BY
sangat mudah sekali, sebagai contoh kita akan mengelompokan data status, ada berapa data status di table orders dengan menggunakan query dibawah ini.
SELECT status FROM orders GROUP BY status
Dari query diatas maka akan menghasilkan data sebagai berikut…
Dari penggunaan query diatas maka akan menghasilkan data seperti gambar diatas.
Query GROUP BY Dengan Fungsi Agregat
Fungsi agregat digunakan untuk menghitung nilai keseluruhan dari beberapa data untuk mengetahui jumlah yang diinginkan pada suatu data. Sebagia contoh query dibawah ini.
SELECT status, COUNT(*) AS total FROM orders GROUP BY status
Code language: PHP (php)
Query diatas digunakan untuk menghitung berapa data order pada setiap status yang ada didalam tabel orders.
Lalu pada contoh lainnya kita akan menghitung berapa total penjualan setiap produk yang tersedia pada table products
dengan menggunakan JOIN
antara table products
dan juga orders.
Pada diagram diatas adalah desain sederhana dari 2 tabel yang sebelumnya sudah kita buat, untuk selanjutnya kita coba lakukan penjumlahan berdasarkan jumlah quantity
ditable order dengan price di table products
.
Silahkan gunakan query dibawah ini…
SELECT
products.name,
products.price,
SUM(products.price*orders.quantity) AS amount
FROM products
INNER JOIN orders ON orders.product_id = products.id
GROUP BY orders.product_id
Code language: PHP (php)
Lalu hasil dari query diatas seperti pada gambar dibawah ini..
Group By Dengan Klausa Where
Selain itu kita juga dapat menentukan secara spesifik data mana yang ingin kita lakukan grouping sehingga data tertentu saja sesuai kebutuhan yang ingin kita tampilkan, anda dapat menggunakan klausa WHERE seperti dibawah ini.
SELECT products.name, products.price, SUM(products.price*orders.quantity) AS amount FROM products
INNER JOIN orders ON orders.product_id = products.id
WHERE orders.status = 'Shipped'
GROUP BY orders.product_id
Code language: PHP (php)
Dari query diatas bisa dilihat, kita akan memfilter data yang hanya memiliki status = Shipped, sebagai contoh hasilnya pada gambar dibawah ini.
Group By Dengan Having
Sama seperti WHERE
, penggunaan HAVING
bertujuan untuk mengelompokan data tertentu berdasarkan kondisi yang diberikan, bedanya HAVING
hanya bisa dilakukan setelah query GROUP BY
, seperti contoh dibawah ini, kita akan mengeluarkan data yang harganya dibawah sama dengan 100000.
SELECT products.name, products.price, SUM(products.price*orders.quantity) AS amount FROM products
INNER JOIN orders ON orders.product_id = products.id
GROUP BY orders.product_id
HAVING products.price <= 100000
Code language: PHP (php)
Maka hasilnya akan seperti gambar dibawah ini…
Penggunaan GROUP BY MySQL ini tentunya sangat bermanfaat untuk mengelompokan data tertentu sebagai kalkulasi dari beberapa data, tentunya akan semakin kompleks jika data yang ditangani jumlahnya sangat banyak.
Demikian tutorial ini semoga bermanfaat.