GROUP BY adalah salah satu perintah yang digunakan di SQL untuk mengelompokkan data berdasarkan kolom yang dipilih, biasanya untuk mendapat suatu hasil dari perhitungan rata-rata | AVG(), penjumlahan | SUM(), nilai tertinggi | MAX(), nilai terkecil | MIN() dan jumlah baris data | COUNT()
Kita akan menggunakan contoh data ini
tabel Penjualan
| Id | Nama | Barang | Jumlah |
|---|---|---|---|
| 1 | Joni | Sabun | 2 |
| 2 | Tera | Teh | 4 |
| 3 | Andra | Sabun | 3 |
| 4 | Joni | Sapu | 1 |
| 5 | Tera | Gelas | 2 |
| 6 | Joni | Mie | 2 |
| 7 | Joni | Sabun | 3 |
berikut query untuk membuat dan insert tabel Penjualan
CREATE TABLE Penjualan{
Id int,
Nama varchar(50),
Barang varchar(50),
Jumlah int,
}
INSERT INTO Penjualan VALUES (1,'Joni','Sabun',2)
INSERT INTO Penjualan VALUES (1,'Tera','teh',4)
INSERT INTO Penjualan VALUES (1,'Andra','Sabun',3)
INSERT INTO Penjualan VALUES (1,'Joni','Sapu',1)
INSERT INTO Penjualan VALUES (1,'Tera','Gelas',2)
INSERT INTO Penjualan VALUES (1,'Joni','Mie',2)SELECT nama_kolom,nama_kedua
FROM nama_tabel
GROUP BY nama_kolom,nama_keduaDalam penggunaan GROUP BY, hanya kolom yang akan menjadi dasar dari pengelompokan data yang bisa ditampilkan (SELECT).
Contoh - kita ingin mengelompokkan data berdasar kolom Nama
SELECT Nama
FROM Penjulaan
GROUP BY Namaoutput :
| Nama |
|---|
| Joni |
| Tera |
| Andra |
Jika kita ingin menampilkan kolom Barang juga (SELECT Nama, Barang) maka di GROUP BY harus ditambahkan kolom Barang juga (GROUP BY Nama, Barang), jika tidak akan terjadi error
Count() adalah query untuk mendapat jumlah baris dari suatu table, tetapi karena kita menggunakan GROUP BY sehingga hasil nya adalah jumlah baris dari suatu data
Contoh - Mencari jumlah barang yang dibeli dari tiap Nama
SELECT Nama, count(barang) as jumlah_barang
FROM Penjulaan
GROUP BY Namaoutput
| Nama | jumlah_Barang |
|---|---|
| Joni | 4 |
| Tera | 2 |
| Andra | 1 |
karena Joni membeli 4 barang (Sabun 2x, sapu dan mie) maka akan keluar 4 di kolom hitung barang
Sum() adalah query untuk mendapat Penjumlahan data dari 1 kolom yang dipilih, tetapi karena kita menggunakan GROUP BY sehingga hasil nya adalah Penjumlahan data dari 1 kolom dipilih berdasarkan pengelompokan data
Contoh - Jumlahkan total barang yang dibeli berdasarkanNama
SELECT Nama, sum(jumlah) as jumlah_barang
FROM Penjulaan
GROUP BY Namaoutput
| Nama | jumlah_barang |
|---|---|
| Joni | 8 |
| Tera | 6 |
| Andra | 3 |
Joni membeli Sabun 2x (5), sapu (1) dan mie (2) maka hasil nya 8
AVG() adalah query untuk mendapat rata-rata dari 1 kolom yang dipilih, tetapi karena kita menggunakan GROUP BY sehingga hasil nya adalah rata-rata dari 1 kolom yang dipilih berdasarkan pengelompokan data
Contoh - rata-rata barang yang dibeli berdasarkanNama
SELECT Nama, avg(barang) as rata_rata
FROM Penjulaan
GROUP BY Nama| Nama | rata_rata |
|---|---|
| Joni | 2 |
| Tera | 2 |
| Andra | 3 |
Karena Joni membeli 4 barang (count()) dengan jumlah 8 (sum()) maka 8/4 = 2
MIN() dan MAX() menggunakan GROUP BY sehingga hasil nya adalah nilai minimal dan maksimal berdasarkan pengelompokan data
Contoh - minimal dan maksimal barang yang dibeli berdasarkanNama
SELECT Nama, min(jumlah) as minimal, max(jumlah) as maksimal,
FROM Penjulaan
GROUP BY Nama| Nama | minimal | maksimal |
|---|---|---|
| Joni | 1 | 3 |
| Tera | 2 | 4 |
| Andra | 3 | 3 |
GROUP BY juga dapat digunakan untuk mengelompokan data berdasarkan 2 Kolom
SELECT Nama, Barang, sum(Jumlah) as jumlah_barang
FROM Penjulaan
GROUP BY Nama,Barangoutput :
| Nama | Barang | Jumlah |
|---|---|---|
| Joni | Sabun | 5 |
| Tera | Teh | 4 |
| Andra | Sabun | 3 |
| Joni | Sapu | 1 |
| Tera | Gelas | 2 |
| Joni | Mie | 2 |
Pada Nama = Joni dan Barang = Sabun, karna ada 2 baris data yang memiliki nilai yang sama maka kolom jumlah pada baris tersebut akan dijumlahkan 2 + 3 = 5
GROUP BY juga dapat mengelompokan data dari 2 tabel yang berbeda, gabungkan query JOIN dengan query GROUP BY, dan ikuti aturan pengggunaan GROUP BY.
SELECT nama_tabel_1.nama_kolom_tabel_1,
nama_tabel_2.nama_kolom_tabel_2,
sum(nama_tabel_2.nama_kolom_jumlah)
FROM nama_tabel_1
JOIN nama_tabel_2
ON nama_tabel_2.id = nama_tabel_1.tabel2_id
GROUP BY nama_tabel_1.nama_kolom,
nama_tabel_2.nama_kolomContoh diatas adalah penggabungan tabel nama_tabel_1 dan tabel nama_tabel_2.
Kolom yang ditampilkan adalah kolom nama_kolom_tabel_1 dan nama_kolom_tabel_2 dan method sum pada kolom nama_kolom_jumlah
| Relational Database Management | test syntax |
|---|---|
| SQL Server | ✔️ |
| MariaDB | ✔️ |
| . . |