Perintah GROUP BY SQL

Fungsi penggabungan (seperti SUM) sering kali memerlukan perintah GROUP BY.

Perintah GROUP BY

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

语法 SQL GROUP BY

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

Contoh SQL GROUP BY

Kami memiliki tabel "Orders" ini 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 total jumlah 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 set seperti ini:

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000

Sangat bagus, bukan?

Ayo lihat apa yang terjadi jika GROUP BY diabaikan:

SELECT Customer,SUM(OrderPrice) FROM Orders

Hasil set seperti ini:

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

Hasil set yang dihasilkan di atas bukan yang kita butuhkan.

Tapi kenapa tidak dapat digunakan pernyataan SELECT di atas? Penjelasan di bawah ini: 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