Perintah GROUP BY SQL
- Halaman Sebelumnya SQL sum()
- Halaman Berikutnya HAVING 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
- Halaman Sebelumnya SQL sum()
- Halaman Berikutnya HAVING SQL