Perintah GROUP BY SQL

Fungsi akumulasi (seperti SUM) sering kali memerlukan kalimat GROUP BY.

Kalimat GROUP BY

Kalimat GROUP BY digunakan untuk menggabungkan fungsi akumulasi, mengelompokkan hasil set berdasarkan satu atau lebih kolom.

Grammar SQL GROUP BY

SELECT column_name, fungsi agregat (column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

Contoh SQL GROUP BY

Kami memiliki tabel "Orders" di bawah ini:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

Sekarang, kami ingin mencari jumlah total untuk setiap pelanggan (total pesanan).

Kami ingin menggunakan pernyataan GROUP BY untuk menggabungkan pelanggan.

Kami menggunakan pernyataan SQL berikut:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

Hasil yang didapat seperti ini:

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000

Menarik, kan?

Biarkan kita lihat apa yang terjadi jika GROUP BY diabaikan:

SELECT Customer,SUM(OrderPrice) FROM Orders

Hasil yang didapat seperti ini:

Customer SUM(OrderPrice)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700

Hasil yang didapat di atas bukan yang kita inginkan.

Mengapa tidak dapat digunakan pernyataan SELECT di atas? Penjelasan seperti berikut: Pernyataan SELECT di atas menentukan dua kolom (Customer dan SUM(OrderPrice)). "SUM(OrderPrice)" mengembalikan nilai tunggal (total kolom "OrderPrice"), sementara "Customer" mengembalikan enam nilai (setiap nilai untuk setiap baris di tabel "Orders"). Oleh karena itu, kami tidak mendapatkan hasil yang benar. Namun, Anda telah melihat, pernyataan GROUP BY memecahkan masalah ini.

GROUP BY lebih dari satu kolom

Kami juga dapat mengaplikasikan pernyataan GROUP BY untuk lebih dari satu kolom, seperti ini:

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate