Tutorial Group By MySQL

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.

Tutorial Group By MySQL

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…

SELECT MySQL

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…

Select Group by Basic

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 statusCode 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.

Group By MySQL Relation

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_idCode language: PHP (php)

Lalu hasil dari query diatas seperti pada gambar dibawah ini..

Select MySQL Join Group By

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_idCode language: PHP (php)

Dari query diatas bisa dilihat, kita akan memfilter data yang hanya memiliki status = Shipped, sebagai contoh hasilnya pada gambar dibawah ini.

Select Group By Where MySQL

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 <= 100000Code language: PHP (php)

Maka hasilnya akan seperti gambar dibawah ini…

Select Group By Having

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.

Komentar

Selamat, anda berkesempatan menjadi komentator pertama di artikel ini. Punya pertanyaan atau saran? Silahkan tinggalkan komentar untuk memulai diskusi.
Terima kasih telah memilih untuk meninggalkan komentar. Harap diingat bahwa semua komentar dimoderasi sesuai dengan kebijakan, dan informasi anda TIDAK akan dipublikasikan. Harap JANGAN gunakan kata kunci di kolom nama. Mari kita buat diskusi yang menarik dan bermakna.

Tinggalkan komentar

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.