DML: SELECT dengan GROUP BY

Pernyataan GROUP BY dalam SQL digunakan dengan pernyataan SELECT untuk menyusun data yang identik menjadi kelompok. Pernyataan GROUP BY muncul setelah setiap pernyataan WHERE, tetapi sebelum pernyataan ORDER BY atau HAVING. Sering digunakan dengan fungsi agregat (COUNT, MAX, MIN, SUM, AVG) untuk mengelompokkan hasil set oleh satu atau beberapa kolom.

Sintaks Dasar

SELECT nama_kolom, fungsi_agregat(nama_kolom)
FROM nama_tabel
WHERE kondisi
GROUP BY nama_kolom;
  • nama_kolom: Kolom yang ingin Anda pilih.
  • fungsi_agregat(nama_kolom): Fungsi agregat (mis., SUM, COUNT, MIN, MAX, AVG).
  • nama_tabel: Tabel dari mana untuk memilih.
  • kondisi: Klausa opsional untuk menyaring baris.
  • GROUP BY nama_kolom: Kolom untuk mengelompokkan data.

Contoh 1

Mari kita mulai dengan contoh dasar:

Tabel “order”

order_idcustomer_idproduct_id
131
212
323
451

Untuk menghitung jumlah pesanan untuk setiap produk, kita dapat menggunakan pernyataan GROUP BY sebagai berikut:

SELECT product_id, COUNT(order_id) as jumlah_pesanan
FROM order
GROUP BY product_id;

Hasil-set:

product_idjumlah_pesanan
12
21
31

Hasil-set menunjukkan bahwa product_id 1 telah dipesan dua kali, dan product_id 2 dan product_id 3 telah dipesan satu kali.

Contoh 2 - Menggunakan GROUP BY dengan Klausa WHERE

Kita dapat menggunakan klausa GROUP BY dengan klausa WHERE untuk menyaring catatan sebelum pengelompokan.

SELECT product_id, COUNT(order_id) as jumlah_pesanan
FROM order
WHERE customer_id > 2
GROUP BY product_id;

Hasil-set:

product_idjumlah_pesanan
12
31

Hasil-set menunjukkan jumlah pesanan untuk setiap produk, tetapi hanya mencakup pesanan dari pelanggan dengan customer_id lebih besar dari 2.

Contoh 3 - Menggunakan GROUP BY dengan Klausa HAVING

Klausa HAVING ditambahkan ke SQL karena kata kunci WHERE tidak dapat digunakan dengan fungsi agregat. Kita dapat menggunakan klausa HAVING untuk menyaring hasil dari klausa GROUP BY.

SELECT product_id, COUNT(order_id) as jumlah_pesanan
FROM order
GROUP BY product_id
HAVING COUNT(order_id) > 1;

Hasil-set:

product_idjumlah_pesanan
12

Hasil-set hanya mencakup produk yang telah dipesan lebih dari satu kali.

Contoh 4 - Menggunakan GROUP BY dengan Klausa JOIN

Klausa GROUP BY juga dapat digunakan dengan klausa JOIN untuk mengelompokkan data dari beberapa tabel.

Pertimbangkan tabel baru “product”:

Tabel “product”

product_idproduct_nameprice
1Apple1.00
2Banana0.50
3Cherry2.00

Untuk mendapatkan harga total untuk setiap produk yang dijual, kita dapat bergabung dengan tabel “order” dan tabel “product” dan mengelompokkan hasil berdasarkan nama produk.

SELECT product.product_name, COUNT(order.order_id) as jumlah_pesanan, SUM(product.price) as total_harga
FROM order
JOIN product
ON order.product_id = product.product_id
GROUP BY product.product_name;

Hasil-set:

product_namejumlah_pesanantotal_harga
Apple22.00
Banana10.50
Cherry12.00

Hasil-set menunjukkan harga total untuk setiap produk yang dijual berdasarkan jumlah pesanan.

  1. SQL GROUP BY Statement - W3Schools
  2. The GROUP BY Statement in SQL - SQL Tutorial
  3. SQL Aggregate Functions - W3Schools
  4. SQL HAVING Clause - SQL Server Tutorial
  5. Using JOINs in SQL Server - Microsoft Docs
  6. Filtering Data with WHERE Clause in SQL Server - SQL Server Tutorial
  7. Using GROUP BY with COUNT - Mode Analytics
Last updated on