SQL - Group By vs Order By (ID)
Hai, para penggemar SQL yang sedang berkembang! Hari ini, kita akan mendalami dua klausal penting dalam SQL: Group By dan Order By. Sebagai guru komputer di lingkungan sekitar Anda, saya sangat gembira untuk mengarahkan Anda melalui konsep ini. Jangan khawatir jika Anda baru saja memulai programming - kita akan mulai dari dasar dan menaikkan tingkatnya. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita mulai petualangan SQL kami!
Klausal SQL Group By
Apa itu Group By?
Klausal Group By adalah seperti seorang organisator yang membantu untuk data Anda. Bayangkan Anda memiliki lemari pakaian yang kacau. Group By membantu Anda mengatur pakaian tersebut menjadi beberapa punggung rapi berdasarkan karakteristik tertentu - seperti warna atau jenis pakaian.
Dalam istilah SQL, Group By memungkinkan Anda mengatur data Anda menjadi kelompok berdasarkan satu atau lebih kolom. Ini sangat berguna ketika Anda ingin melakukan perhitungan atau ringkasan atas kelompok ini.
Sintaks Dasar
Ini adalah struktur dasar klausal Group By:
SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;
mari kitauraikan ini:
- Kita SELECT kolom yang kita ingin lihat dalam hasilnya.
- Kita menentukan tabel mana yang kita ambil data nya DARI.
- Bagian GROUP BY memberitahu SQL kolom mana yang akan digunakan untuk pengelompokan.
Contoh 1: Pengelompokan Penjualan berdasarkan Produk
Bayangkan kita memiliki tabel sales
dengan kolom: product_name
, quantity_sold
, dan sale_date
. Mari kita kelompokkan penjualan kita berdasarkan produk:
SELECT product_name, SUM(quantity_sold) as total_sold
FROM sales
GROUP BY product_name;
Query ini akan menunjukkan jumlah penjualan total untuk setiap produk. Berikut apa yang terjadi:
- Kita SELECT
product_name
dan SUMquantity_sold
. - Kita mengambil data ini DARI tabel
sales
. - Kita GROUP BY
product_name
, sehingga SQL akan membuat kelompok untuk setiap produk yang unik.
Hasilnya mungkin terlihat seperti ini:
product_name | total_sold |
---|---|
Apple | 150 |
Banana | 200 |
Orange | 175 |
Contoh 2: Pengelompokan Berganda
Kita juga dapat mengelompokkan berdasarkan beberapa kolom. Misalnya, kita ingin mengelompokkan penjualan kita berdasarkan produk dan tanggal:
SELECT product_name, sale_date, SUM(quantity_sold) as daily_total
FROM sales
GROUP BY product_name, sale_date;
Query ini mengelompokkan penjualan kita berdasarkan produk dan tanggal, menunjukkan total harian untuk setiap produk.
Klausal SQL Order By
Apa itu Order By?
Jika Group By adalah organisator lemari pakaian kita, Order By seperti mengatur pakaian dari yang paling ringan ke paling gelap atau dari yang paling pendek ke paling panjang. Ini tentang pengurutan data kita dalam urutan tertentu.
Sintaks Dasar
Struktur dasar klausal Order By adalah:
SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];
- ASC berarti urutan naik (terkecil ke terbesar, atau A ke Z).
- DESC berarti urutan turun (terbesar ke terkecil, atau Z ke A).
- Jika Anda tidak menentukan, SQL menganggap ASC secara default.
Contoh 3: Pengurutan Produk berdasarkan Penjualan
Mari kita urutkan produk berdasarkan penjualan total mereka:
SELECT product_name, SUM(quantity_sold) as total_sold
FROM sales
GROUP BY product_name
ORDER BY total_sold DESC;
Query ini melakukan hal berikut:
- Mengelompokkan penjualan berdasarkan produk.
- Menghitung penjualan total untuk setiap produk.
- Mengurutkan hasilnya dari yang tertinggi ke yang terendah.
Hasilnya mungkin terlihat seperti ini:
product_name | total_sold |
---|---|
Banana | 200 |
Orange | 175 |
Apple | 150 |
Contoh 4: Pengurutan Berganda
Kita juga dapat mengurutkan berdasarkan beberapa kolom:
SELECT product_name, sale_date, SUM(quantity_sold) as daily_total
FROM sales
GROUP BY product_name, sale_date
ORDER BY product_name ASC, daily_total DESC;
Query ini:
- Mengelompokkan penjualan berdasarkan produk dan tanggal.
- Mengurutkan terlebih dahulu berdasarkan nama produk (huruf A ke Z).
- Kemudian mengurutkan berdasarkan total harian (tertinggi ke terendah) dalam setiap kelompok produk.
Group By vs Order By
Sekarang kita telah melihat Group By dan Order By dalam aksi, mari kita bandingkan mereka:
Fitur | Group By | Order By |
---|---|---|
Tujuan | Mengatur data menjadi kelompok | Mengurutkan data dalam urutan tertentu |
Penggunaan | Digunakan dengan fungsi agregat | Dapat digunakan dengan atau tanpa agregat |
Hasil | Mengurangi jumlah baris (meringkas) | Tidak mengubah jumlah baris |
Posisi | Muncul sebelum ORDER BY dalam query | Muncul setelah GROUP BY (jika ada) |
Fungsionalitas | Membuat kelompok untuk perhitungan agregat | Menentukan urutan baris keluaran |
Kapan Menggunakan Group By
Gunakan Group By ketika Anda ingin:
- Meringkasan data (seperti mendapatkan total atau rata-rata untuk setiap kelompok).
- Melakukan perhitungan atas kelompok data.
- Mengurangi jumlah baris dalam hasil Anda.
Kapan Menggunakan Order By
Gunakan Order By ketika Anda ingin:
- Mengurutkan hasil Anda dalam urutan tertentu (naik atau turun).
- Menyajikan data dalam urutan yang mudah dibaca atau logis.
- Menemukan nilai paling tinggi atau paling rendah dalam data Anda.
Contoh 5: Menggabungkan Group By dan Order By
Mari kita gabungkan semua dengan contoh akhir. Misalnya, kita ingin menemukan 3 produk penjualan teratas untuk setiap bulan:
SELECT
EXTRACT(MONTH FROM sale_date) as month,
product_name,
SUM(quantity_sold) as total_sold
FROM
sales
GROUP BY
EXTRACT(MONTH FROM sale_date), product_name
ORDER BY
month ASC, total_sold DESC
LIMIT 3;
Query ini:
- Mengelompokkan penjualan berdasarkan bulan dan produk.
- Menghitung penjualan total untuk setiap produk dalam setiap bulan.
- Mengurutkan hasilnya berdasarkan bulan (naik) dan kemudian penjualan total (turun).
- Batasi output menjadi 3 produk teratas untuk setiap bulan.
Dan itu adalah semua! Kita telah melintasi wilayah Group By dan Order By. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba klausal ini dalam query Anda sendiri. Selamat belajar SQL, dan may your data always be well-organized and perfectly sorted!
Credits: Image by storyset