Tutorial Group By MySQL

Created at by Aris Munandar

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.

Comments

Congrats, you have the opportunity to be the first commenter on this article. Have questions or suggestions? Please leave a comment to start discussion.

Leave comment

Alamat email Anda tidak akan dipublikasikan. Required fields are marked *

news-1701

sabung ayam online

yakinjp

yakinjp

rtp yakinjp

slot thailand

yakinjp

yakinjp

yakin jp

yakinjp id

maujp

maujp

maujp

maujp

sabung ayam online

sabung ayam online

judi bola online

sabung ayam online

judi bola online

slot mahjong ways

slot mahjong

sabung ayam online

judi bola

live casino

sabung ayam online

judi bola

live casino

SGP Pools

slot mahjong

sabung ayam online

slot mahjong

SLOT THAILAND

118000731

118000732

118000733

118000734

118000735

118000736

118000737

118000738

118000739

118000740

118000741

118000742

118000743

118000744

118000745

118000761

118000762

118000763

118000764

118000765

118000766

118000767

118000768

118000769

118000770

118000771

118000772

118000773

118000774

118000775

118000776

118000777

118000778

118000779

118000780

118000781

118000782

118000783

118000784

118000785

118000786

118000787

118000788

118000789

118000790

118000791

118000792

118000793

118000794

118000795

138000456

138000457

138000458

138000459

138000460

138000461

138000462

138000463

138000464

138000465

138000466

138000467

138000468

138000469

138000470

138000471

138000472

138000473

138000474

138000475

138000476

138000477

138000478

138000479

138000480

138000481

138000482

138000483

138000484

138000485

138000486

138000487

138000488

138000489

138000490

138000491

138000492

138000493

138000494

138000495

138000496

138000497

138000498

138000499

138000500

138000501

138000502

138000503

138000504

138000505

138000506

138000507

138000508

138000509

138000510

158000371

158000372

158000373

158000374

158000375

158000376

158000377

158000378

158000379

158000380

158000381

158000382

158000383

158000384

158000385

158000386

158000387

158000388

158000389

158000390

158000391

158000392

158000393

158000394

158000395

158000396

158000397

158000398

158000399

158000400

158000401

158000402

158000403

158000404

158000405

208000391

208000392

208000393

208000394

208000395

208000396

208000397

208000398

208000399

208000400

208000401

208000402

208000403

208000404

208000405

208000406

208000407

208000408

208000409

208000410

208000411

208000412

208000413

208000414

208000415

208000416

208000417

208000418

208000419

208000420

228000156

228000157

228000158

228000159

228000160

228000161

228000162

228000163

228000164

228000165

228000166

228000167

228000168

228000169

228000170

228000171

228000172

228000173

228000174

228000175

228000176

228000177

228000178

228000179

228000180

228000181

228000182

228000183

228000184

228000185

228000186

228000187

228000188

228000189

228000190

228000191

228000192

228000193

228000194

228000195

228000196

228000197

228000198

228000199

228000200

228000201

228000202

228000203

228000204

228000205

228000206

228000207

228000208

228000209

228000210

228000211

228000212

228000213

228000214

228000215

228000216

228000217

228000218

228000219

228000220

228000221

228000222

228000223

228000224

228000225

228000226

228000227

228000228

228000229

228000230

228000231

228000232

228000233

228000234

228000235

228000236

228000237

228000238

228000239

228000240

228000241

228000242

228000243

228000244

228000245

228000246

228000247

228000248

228000249

228000250

228000251

228000252

228000253

228000254

228000255

238000230

238000231

238000232

238000233

238000234

238000235

238000236

238000237

238000238

238000239

238000240

238000241

238000242

238000243

238000244

238000245

238000246

238000247

238000248

238000249

238000250

238000237

238000238

238000239

238000240

238000241

238000242

238000243

238000244

238000245

238000246

238000247

238000248

238000249

238000250

238000251

238000252

238000253

238000254

238000255

238000256

news-1701