Jawaban:
ORDER BY mengubah urutan pengembalian item.
GROUP BY akan menggabungkan record berdasarkan kolom tertentu yang memungkinkan Anda menjalankan fungsi agregasi pada kolom yang tidak dikelompokkan (seperti SUM, COUNT, AVG, dll).
ORDER BY mengubah urutan pengembalian item.
GROUP BY akan menggabungkan record berdasarkan kolom tertentu yang memungkinkan Anda menjalankan fungsi agregasi pada kolom yang tidak dikelompokkan (seperti SUM, COUNT, AVG, dll).
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
age
kolom, dengan Peters memiliki usia yang berbeda dan querynya adalah PILIH NAMA, USIA DARI KELOMPOK TABEL BERDASARKAN NAMA?
ORDER BY: mengurutkan data dalam urutan naik atau turun.
Pertimbangkan tabel CUSTOMERS :
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Berikut ini adalah contoh yang akan mengurutkan hasil dalam urutan menaik menurut NAME:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
Ini akan menghasilkan hasil sebagai berikut:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
GROUP BY: menyusun data yang identik ke dalam kelompok.
Sekarang, tabel CUSTOMERS memiliki record berikut dengan nama duplikat:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Jika Anda ingin mengelompokkan nama yang identik menjadi satu nama, maka kueri GROUP BY adalah sebagai berikut:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
Ini akan menghasilkan hasil sebagai berikut: (untuk nama yang identik ia akan memilih yang terakhir dan akhirnya mengurutkan kolom dalam urutan menaik)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
seperti yang Anda simpulkan bahwa itu tidak ada gunanya tanpa fungsi SQL seperti sum, avg dll ..
jadi pelajari definisi ini untuk memahami penggunaan yang tepat dari GROUP BY:
Klausa GROUP BY bekerja pada baris yang dikembalikan oleh kueri dengan meringkas baris yang identik menjadi satu / grup berbeda dan mengembalikan satu baris dengan ringkasan untuk setiap grup, dengan menggunakan fungsi Agregat yang sesuai dalam daftar PILIH, seperti COUNT (), SUM (), MIN (), MAX (), AVG (), dll.
Sekarang, jika Anda ingin mengetahui jumlah total gaji pada setiap pelanggan (nama), maka query GROUP BY adalah sebagai berikut:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Ini akan menghasilkan hasil sebagai berikut: (jumlah gaji dari nama yang identik dan urutkan kolom NAMA setelah menghapus nama yang identik)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
Perbedaannya persis seperti namanya: grup dengan melakukan operasi pengelompokan, dan urutan berdasarkan jenis.
Jika kamu melakukan SELECT * FROM Customers ORDER BY Name
maka Anda mendapatkan daftar hasil yang diurutkan berdasarkan nama pelanggan.
Jika Anda melakukannya, SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
Anda mendapatkan jumlah pelanggan aktif dan tidak aktif. Kelompokkan dengan mengumpulkan hasil berdasarkan bidang yang Anda tentukan.
Mereka memiliki arti yang sangat berbeda dan tidak benar-benar berhubungan sama sekali.
DIPESAN OLEH memungkinkan Anda mengurutkan hasil menurut kriteria yang berbeda, seperti urutan pertama menurut nama dari az, lalu mengurutkan menurut harga tertinggi hingga terendah.
(ORDER BY nama, DESC harga)
GROUP BY memungkinkan Anda untuk mengambil set hasil Anda, mengelompokkannya ke dalam grup logis dan kemudian menjalankan kueri agregat pada grup tersebut. Misalnya, Anda dapat memilih semua karyawan, mengelompokkan mereka berdasarkan lokasi tempat kerja mereka dan menghitung gaji rata-rata semua karyawan di setiap lokasi kerja.
Sederhana, ORDER BY
mengurutkan data dan GROUP BY
mengelompokkan, atau menggabungkan data.
ORDER BY
mengurutkan hasil yang ditetapkan sesuai bidang yang disebutkan, secara default dalam urutan menaik.
Misalkan Anda menjalankan kueri karena ORDER BY (student_roll_number)
, ini akan menunjukkan kepada Anda hasil dalam urutan menaik nomor gulungan siswa. Sini,student_roll_number
entri mungkin terjadi lebih dari sekali.
Dalam GROUP BY
kasus ini, kami menggunakan ini dengan fungsi agregat, dan ini mengelompokkan data sesuai fungsi agregat, dan kami mendapatkan hasilnya. Di sini, jika kueri kami memiliki SUM (marks)
bersama, GROUP BY (student_first_name)
itu akan menunjukkan jumlah nilai siswa yang termasuk dalam setiap grup (di mana semua anggota grup akan memiliki nama depan yang sama).
GROUP BY digunakan untuk mengelompokkan baris dalam pemilihan, biasanya saat menggabungkan baris (misalnya menghitung total, rata-rata, dll. Untuk satu set baris dengan nilai yang sama untuk beberapa bidang).
ORDER BY digunakan untuk mengurutkan baris yang dihasilkan dari pernyataan pilih.
Beberapa contoh bagus di sana. Sama seperti menambahkan milik saya dari webcheatsheet yang memberikan contoh jelas yang bagus, serta membiarkan Anda menjalankan SQL Anda sendiri.
ORDER BY
menunjukkan bidang dalam urutan menaik atau menurun. Sementara GROUP BY
menunjukkan nama bidang yang sama, id dll hanya dalam satu keluaran.
Perlu dicatat bahwa GROUP BY
tidak selalu diperlukan karena (setidaknya di PostgreSQL, dan kemungkinan dalam varian SQL lainnya) Anda dapat menggunakan ORDER BY
daftar dan Anda masih dapat menggunakan ASC
atau DESC
per kolom ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;