Dalam artikel SQL ini, kita akan belajar tentang klausa GROUP BY dan cara menggunakannya dalam SQL. Kita juga akan membahas penggunaan klausa GROUP BY dengan klausa WHERE.
Apa yang dimaksud dengan klausa GROUP BY?
Klausa GROUP BY adalah klausa SQL yang digunakan dalam pernyataan SELECT untuk mengelola catatan yang sama dari kolom dalam grup menggunakan fungsi SQL.
Sintaks klausa GROUP BY:
SELECT columnname1, columnname2, columnname3 FROM tablename GROUP BY columnname;
Kita dapat menggunakan beberapa kolom dari tabel dalam klausa GROUP BY.
Ada beberapa langkah, kita harus belajar bagaimana menggunakan klausa GROUP BY dalam query SQL:
1. Buat database baru atau gunakan database yang sudah ada dengan memilih database menggunakan kata kunci USE diikuti dengan nama database.
2. Buat tabel baru di dalam database yang dipilih, atau Anda dapat menggunakan tabel yang sudah dibuat.
3. Jika tabel baru dibuat, masukkan catatan dalam database yang baru dibuat menggunakan kueri INSERT dan lihat data yang dimasukkan menggunakan kueri SELECT tanpa klausa GROUP BY.
4. Sekarang, kita siap untuk menggunakan klausa GROUP BY dalam query SQL.
Langkah 1:Buat database baru atau gunakan database yang sudah dibuat.
Saya sudah membuat database. Saya akan menggunakan nama database yang sudah saya buat, Perusahaan.
USE Company;
Perusahaan adalah nama database.
Bagi yang belum membuat database, ikuti query di bawah ini untuk membuat database:
CREATE DATABASE database_name;
Setelah membuat database, pilih database menggunakan kata kunci USE diikuti dengan nama database.
Langkah 2:Buat tabel baru atau gunakan tabel yang sudah ada:
Saya sudah membuat tabel. Saya akan menggunakan tabel yang ada bernama Karyawan.
Untuk membuat tabel baru, ikuti sintaks CREATE TABLE di bawah ini:
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Langkah 3:Sisipkan rekaman ke dalam tabel yang baru dibuat menggunakan kueri INSERT dan lihat rekaman menggunakan kueri SELECT.
Gunakan sintaks berikut untuk menyisipkan catatan baru dalam tabel:
INSERT INTO table_name VALUES(value1, value2, value3);
Gunakan sintaks berikut untuk melihat catatan dari tabel:
SELECT * FROM table_name;
Kueri berikut akan menampilkan catatan Karyawan:
SELECT * FROM Employees;
Output dari query SELECT di atas adalah:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | BAIK | 60500 | MUMBAI | UJI | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGRWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARKIT | SHARMA | 55500 | DELHI | UJI | 4 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | UJI | 4 |
6002 | ATIS | JADHAV | 60500 | BANGALORE | C# | 5 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
Langkah 4:Kami siap menggunakan klausa GROUP BY dalam kueri
Sekarang kita akan mempelajari lebih dalam klausa GROUP BY dengan bantuan contoh
Contoh 1: Tulis kueri untuk menampilkan grup catatan karyawan menurut kota.
SELECT * FROM EMPLOYEES GROUP BY CITY;
Kueri di atas menampilkan catatan karyawan di mana seorang karyawan dari kota yang sama akan dianggap satu grup. Misalnya, jika ada 10 record pegawai dalam tabel dimana 3 dari kota Pune, 3 dari kota Mumbai, 2 dari Hyderabad dan Bangalore, maka query di atas akan mengelompokkan pegawai kota Pune pegawai kota Mumbai sebagai satu record, dan seterusnya .
Output dari query di atas:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN | MANAGERID |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | UJI | 4 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4003 | RUCHIKA | AGRWAL | 60000 | DELHI | ORACLE | 1 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
Seperti yang dapat kita lihat bahwa catatan karyawan dikelompokkan berdasarkan kota, dan catatan ditampilkan dalam urutan menaik secara default.
Contoh 2: Tulis kueri untuk menampilkan grup catatan karyawan berdasarkan gaji dalam urutan menurun.
SELECT * FROM EMPLOYEES GROUP BY SALARY DESC;
Kueri di atas menampilkan catatan karyawan di mana karyawan dengan gaji yang sama akan dianggap sebagai satu kelompok, dan catatan akan ditampilkan dalam urutan menurun.
Keluaran dari kueri di atas:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN | MANAGERID |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
4001 | RAJESH | BAIK | 60500 | MUMBAI | UJI | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
Seperti yang bisa kita lihat, catatan karyawan dikelompokkan berdasarkan gaji, dan catatan ditampilkan dalam urutan menurun, seperti yang kami sebutkan di akhir.
Contoh 3: Tulis kueri untuk menampilkan grup catatan karyawan berdasarkan gaji dan kota.
SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;
Kueri di atas menampilkan catatan karyawan di mana karyawan dengan gaji dan kota yang sama akan dianggap sebagai satu grup.
Misalnya, tabel memiliki 10 catatan karyawan. Dari 10 karyawan 2 gaji karyawan dan kota cocok dengan dua karyawan lainnya dan sisanya gaji enam karyawan dan kota tidak ada bandingannya maka 6 karyawan akan dianggap sebagai 6 kelompok terpisah, dan 2 karyawan yang cocok dengan 2 karyawan lainnya akan dianggap sebagai satu kelompok . Singkatnya, 8 grup akan terbentuk.
Keluaran dari kueri di atas:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN | MANAGERID |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | UJI | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
5001 | ARKIT | SHARMA | 55500 | DELHI | UJI | 4 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4003 | RUCHIKA | AGRWAL | 60000 | DELHI | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
6002 | ATIS | JADHAV | 60500 | BANGALORE | C# | 5 |
4001 | RAJESH | BAIK | 60500 | MUMBAI | UJI | 4 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
Seperti yang bisa kita lihat, catatan karyawan dikelompokkan berdasarkan gaji dan kota, dan catatan ditampilkan dalam urutan menaik secara default.
Contoh 4: Tulis kueri untuk menampilkan catatan karyawan menurut kota dan departemen.
SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;
Kueri di atas menampilkan catatan karyawan di mana karyawan berada di kota yang sama, dan departemen akan dianggap sebagai satu grup.
Keluaran dari kueri di atas:
KARYAWAN | FIRST_NAME | LAST_NAME | GAJI | KOTA | DEPARTEMEN | MANAGERID |
6002 | ATIS | JADHAV | 60500 | BANGALORE | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | UJI | 4 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4003 | RUCHIKA | AGRWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARKIT | SHARMA | 55500 | DELHI | UJI | 4 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | BAIK | 60500 | MUMBAI | UJI | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
Seperti yang dapat kita lihat, catatan karyawan dikelompokkan berdasarkan kota dan departemen, dan catatan ditampilkan dalam urutan menaik secara default.
Contoh 5: Tulis kueri untuk menghitung daftar karyawan di setiap departemen dari tabel karyawan.
SELECT DEPARTMENT, COUNT(DEPARTMENT) FROM EMPLOYEES GROUP BY DEPARTMENT;
Kueri di atas menampilkan jumlah karyawan di setiap grup departemen menurut departemen. Seperti Enam karyawan bekerja di departemen SDM, lima bekerja di departemen lain.
Keluaran dari kueri di atas:
DEPARTEMEN | JUMLAH(DEPARTEMEN) |
C# | 4 |
FMW | 3 |
JAVA | 4 |
ORACLE | 4 |
UJI | 3 |
Seperti yang kita lihat, empat karyawan bekerja di Departemen C#, tiga bekerja di Departemen FMW, dll.
Contoh 6: Tulis kueri untuk menghitung daftar karyawan dari setiap kota dari tabel karyawan.
SELECT CITY, COUNT(CITY) FROM EMPLOYEES GROUP BY CITY;
Kueri di atas menampilkan jumlah karyawan di setiap kelompok kota menurut kota. Seperti tiga karyawan bekerja dari kota Pune, empat bekerja dari kota lain, dan seterusnya.
Output dari query di atas:
KOTA | COUNT(CITY) |
BANGALORE | 2 |
CHANDIGARH | 2 |
DELHI | 2 |
HYDERABAD | 2 |
JAIPUR | 2 |
MUMBAI | 3 |
NOIDA | 2 |
PUNE | 3 |
Seperti yang kita lihat, dua karyawan bekerja dari kota Bangalore, tiga bekerja dari kota Mumbai, dan seterusnya.
Contoh 7: Tulis kueri untuk menjumlahkan kelompok gaji karyawan menurut kota.
SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY;
Di atas digunakan untuk menjumlahkan gaji karyawan yang dikelompokkan berdasarkan nama kota. Misalnya, untuk karyawan dari kota yang sama, gaji mereka akan dijumlahkan dan dianggap satu kelompok. Kami menggunakan fungsi penjumlahan agregat diikuti oleh kolom gaji untuk menambahkan gaji.
Keluaran dari kueri di atas:
KOTA | GAJI |
BANGALORE | 115000 |
CHANDIGARH | 104000 |
DELHI | 115500 |
HYDERABAD | 135.000 |
JAIPUR | 101000 |
MUMBAI | 169.000 |
NOIDA | 114500 |
PUNE | 186500 |
Seperti yang bisa kita lihat, gaji total kota Bangalore adalah 115.000, jumlah gaji kota Chandigarh adalah 104000 yang merupakan penambahan gaji karyawan yang berbeda, tetapi dari kota, pendekatan yang sama digunakan untuk setiap kota.
Contoh 8: Tulis kueri untuk menemukan gaji minimum dari setiap departemen.
SELECT DEPARTMENT, MIN(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;
Query di atas digunakan untuk mencari gaji minimum karyawan dari masing-masing departemen. Gaji salah satu pegawai dari departemen jawa adalah 54.500, yang merupakan yang terendah di seluruh departemen jawa. 48.500 yang sama adalah gaji terendah yang dibayarkan kepada karyawan di departemen C#.
Keluaran dari kueri di atas:
DEPARTEMEN | MIN(GAJI) |
C# | 48500 |
FMW | 50500 |
JAVA | 54500 |
ORACLE | 55500 |
UJI | 54500 |
Seperti yang bisa kita lihat, 50500 adalah gaji terendah yang dibayarkan kepada salah satu karyawan di departemen FMW, 55500 adalah gaji terendah yang dibayarkan kepada salah satu karyawan di departemen ORACLE.
Contoh 9: Tulis kueri untuk menemukan gaji minimum dari setiap kota.
SELECT CITY, MAX(SALARY) FROM EMPLOYEES GROUP BY CITY;
Query di atas digunakan untuk mencari gaji maksimum dari setiap kota. Gaji salah satu karyawan dari kota Pune adalah 65.500 yang merupakan yang tertinggi di seluruh kota Pune, 60.500 yang sama adalah gaji tertinggi yang dibayarkan kepada karyawan di kota Mumbai.
Output dari query di atas:
KOTA | MAX(GAJI) |
BANGALORE | 60500 |
CHANDIGARH | 55500 |
DELHI | 60000 |
HYDERABAD | 70000 |
JAIPUR | 50500 |
MUMBAI | 60500 |
NOIDA | 60000 |
PUNE | 65500 |
Seperti yang kita lihat, 50.500 adalah gaji tertinggi yang dibayarkan kepada salah satu karyawan di kota Jaipur, 55.500 adalah gaji tertinggi yang dibayarkan kepada salah satu karyawan di kota Chandigarh.