In dit SQL-artikel leren we over de GROUP BY-clausule en hoe deze te gebruiken in SQL. We zullen ook het gebruik van de GROUP BY-clausule met de WHERE-clausule bespreken.
Wat is de GROUP BY-clausule?
De GROUP BY-clausule is een SQL-clausule die in de SELECT-instructie wordt gebruikt om dezelfde records van een kolom in de groep te beheren met behulp van SQL-functies.
Syntaxis van GROUP BY-clausule:
SELECT columnname1, columnname2, columnname3 FROM tablename GROUP BY columnname;
We kunnen meerdere kolommen uit de tabel gebruiken in de GROUP BY-component.
Er zijn enkele stappen die we moeten leren om de GROUP BY-component in de SQL-query te gebruiken:
1. Maak een nieuwe database of gebruik een bestaande database door de database te selecteren met het USE-sleutelwoord gevolgd door de databasenaam.
2. Maak een nieuwe tabel in de geselecteerde database, of u kunt een reeds gemaakte tabel gebruiken.
3. Als de tabel nieuw is gemaakt, voegt u de records in de nieuw gemaakte database in met behulp van de INSERT-query en bekijkt u de ingevoegde gegevens met de SELECT-query zonder de GROUP BY-component.
Stap 1:Maak een nieuwe database of gebruik een reeds aangemaakte database.
Ik heb al een database aangemaakt. Ik zal mijn bestaande databasenaam, Company, gebruiken.
USE Company;
Bedrijf is de naam van de database.
Degenen die geen database hebben gemaakt, volgen de onderstaande vraag om de database te maken:
CREATE DATABASE database_name;
Nadat u de database hebt gemaakt, selecteert u de database met behulp van het USE-sleutelwoord gevolgd door de databasenaam.
Stap 2:Maak een nieuwe tabel of gebruik een reeds bestaande tabel:
Ik heb al een tabel gemaakt. Ik zal de bestaande tabel met de naam Werknemers gebruiken.
Volg de onderstaande CREATE TABLE-syntaxis om de nieuwe tabellen te maken:
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Stap 3:Voeg de records in de nieuw gemaakte tabel in met de INSERT-query en bekijk de records met de SELECT-query.
Gebruik de volgende syntaxis om nieuwe records in de tabel in te voegen:
INSERT INTO table_name VALUES(value1, value2, value3);
Gebruik de volgende syntaxis om de records uit de tabel te bekijken:
SELECT * FROM table_name;
De volgende zoekopdracht toont de records van werknemers:
SELECT * FROM Employees;
De uitvoer van de bovenstaande SELECT-query is:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORAKLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | 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 | GOUD | 60500 | MUMBAI | TESTEN | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TESTEN | 4 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORAKLE | 1 |
Stap 4:We zijn klaar om de GROUP BY-clausule in de zoekopdrachten te gebruiken
We gaan nu dieper in op de GROUP BY-clausule met behulp van voorbeelden
Voorbeeld 1: Schrijf een query om de werknemersrecords groep per stad weer te geven.
SELECT * FROM EMPLOYEES GROUP BY CITY;
De bovenstaande query toont de werknemersrecords waarbij een werknemer uit dezelfde stad als één groep wordt beschouwd. Als er bijvoorbeeld 10 werknemersrecords in de tabel zijn waarvan 3 afkomstig zijn uit de stad Pune, 3 uit de stad Mumbai, 2 uit Hyderabad en Bangalore, dan zal de bovenstaande zoekopdracht de werknemer van de stad Pune in de stad Mumbai groeperen als één record, enzovoort .
De uitvoer van de bovenstaande vraag:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TESTEN | 4 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORAKLE | 1 |
Zoals we kunnen zien, zijn de werknemersrecords gegroepeerd per stad en worden records standaard in oplopende volgorde weergegeven.
Voorbeeld 2: Schrijf een query om de records van werknemers op salaris in aflopende volgorde weer te geven.
SELECT * FROM EMPLOYEES GROUP BY SALARY DESC;
De bovenstaande query geeft de werknemersrecords weer waarbij werknemers met hetzelfde salaris als één groep worden beschouwd, en records worden in aflopende volgorde weergegeven.
De uitvoer van de bovenstaande zoekopdracht:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORAKLE | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORAKLE | 1 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
Zoals we kunnen zien, zijn de records van de werknemers gegroepeerd op salaris en worden de records in aflopende volgorde weergegeven, zoals we aan het einde desc noemen.
Voorbeeld 3: Schrijf een query om de records van werknemers per salaris en stad weer te geven.
SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;
De bovenstaande query toont de werknemersrecords waarbij werknemers met hetzelfde salaris en dezelfde stad als één groep worden beschouwd.
Stel dat de tabel 10 werknemersrecords had. Vanaf 10 werknemers Het salaris en de stad van 2 werknemers komen overeen met de andere twee werknemers en de rust van de zes werknemers is het salaris en de stad niet geëvenaard, dan worden de 6 werknemers als 6 afzonderlijke groepen beschouwd en worden 2 werknemers die overeenkomen met de andere 2 werknemers als één groep beschouwd . Kortom, er worden 8 groepen gevormd.
De uitvoer van de bovenstaande zoekopdracht:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TESTEN | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORAKLE | 1 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORAKLE | 1 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
Zoals we kunnen zien, zijn de records van de werknemers gegroepeerd op salaris en stad en worden records standaard in oplopende volgorde weergegeven.
Voorbeeld 4: Schrijf een zoekopdracht om de gegevens van werknemers per stad en afdeling weer te geven.
SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;
De bovenstaande query toont de werknemersrecords waar werknemers zich in dezelfde stad bevinden, en de afdeling wordt als één groep beschouwd.
De uitvoer van de bovenstaande zoekopdracht:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TESTEN | 4 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORAKLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 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 | ORAKLE | 1 |
Zoals we kunnen zien, zijn de records van de werknemers gegroepeerd per stad en afdeling en worden records standaard in oplopende volgorde weergegeven.
Voorbeeld 5: Schrijf een query om de lijst met werknemers in elke afdeling te tellen vanuit de werknemerstabel.
SELECT DEPARTMENT, COUNT(DEPARTMENT) FROM EMPLOYEES GROUP BY DEPARTMENT;
De bovenstaande query toont het aantal werknemers in elke afdelingsgroep per afdeling. Zoals zes medewerkers op de HR-afdeling werken, vijf op een andere afdeling.
De uitvoer van de bovenstaande zoekopdracht:
AFDELING | COUNT(AFDELING) |
C# | 4 |
FMW | 3 |
JAVA | 4 |
ORAKLE | 4 |
TESTEN | 3 |
Zoals we kunnen zien, werken vier medewerkers op de C#-afdeling, drie op de FMW-afdeling, enz.
Voorbeeld 6: Schrijf een zoekopdracht om de lijst met werknemers van elke stad te tellen vanuit de werknemerstabel.
SELECT CITY, COUNT(CITY) FROM EMPLOYEES GROUP BY CITY;
De bovenstaande query geeft het aantal werknemers in elke stad weer, gegroepeerd per stad. Zoals drie werknemers werken vanuit de stad Pune, vier werken vanuit een andere stad, enzovoort.
De uitvoer van de bovenstaande vraag:
STAD | COUNT(CITY) |
BANGALORE | 2 |
CHANDIGARH | 2 |
DELHI | 2 |
HYDERABAD | 2 |
JAIPUR | 2 |
MUMBAI | 3 |
NOIDA | 2 |
PUNE | 3 |
Zoals we kunnen zien, werken twee werknemers in de stad Bangalore, drie in de stad Mumbai, enzovoort.
Voorbeeld 7: Schrijf een vraag om de salarisgroep van de werknemers per stad op te tellen.
SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY;
Het bovenstaande wordt gebruikt om de salarissen van de werknemers op te tellen, gegroepeerd op plaatsnaam. Voor werknemers uit dezelfde stad is hun salaris bijvoorbeeld de som en wordt als één groep beschouwd. We gebruikten de somfunctie gevolgd door de salariskolom voor het toevoegen van salaris.
De uitvoer van de bovenstaande zoekopdracht:
STAD | SALARIS |
BANGALORE | 115000 |
CHANDIGARH | 104000 |
DELHI | 115500 |
HYDERABAD | 135000 |
JAIPUR | 101000 |
MUMBAI | 169000 |
NOIDA | 114500 |
PUNE | 186500 |
Zoals we kunnen zien, is het stadssalaris van Bangalore 115000, het stadssalaris van Chandigarh is 104000, wat de toevoeging is van verschillende werknemerssalarissen, maar vanuit de stad wordt dezelfde aanpak gebruikt voor elke stad.
Voorbeeld 8: Schrijf een zoekopdracht om het minimumsalaris van elke afdeling te vinden.
SELECT DEPARTMENT, MIN(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;
De bovenstaande zoekopdracht wordt gebruikt om het minimumloon van de werknemer van elke afdeling te vinden. Een van de medewerkers van de Java-afdeling heeft een salaris van 54500, het laagste van de hele Java-afdeling. Dezelfde 48500 is het laagste salaris dat wordt betaald aan de medewerker op de afdeling C#.
De uitvoer van de bovenstaande zoekopdracht:
AFDELING | MIN(SALARIS) |
C# | 48500 |
FMW | 50500 |
JAVA | 54500 |
ORAKLE | 55500 |
TESTEN | 54500 |
Zoals we kunnen zien, is 50500 het laagste salaris dat wordt betaald aan een van de werknemers van de afdeling FMW, 55500 is het laagste salaris dat wordt betaald aan een van de werknemers van de afdeling ORACLE.
Voorbeeld 9: Schrijf een zoekopdracht om het minimumloon van elke stad te vinden.
SELECT CITY, MAX(SALARY) FROM EMPLOYEES GROUP BY CITY;
De bovenstaande zoekopdracht wordt gebruikt om het maximale salaris van elke stad te vinden. Een van de werknemers van het salaris van de stad Pune is 65500, wat het hoogste is in de hele stad Pune, dezelfde 60500 is het hoogste salaris dat aan de werknemer in de stad Mumbai wordt betaald.
De uitvoer van de bovenstaande vraag:
STAD | MAX(SALARIS) |
BANGALORE | 60500 |
CHANDIGARH | 55500 |
DELHI | 60000 |
HYDERABAD | 70000 |
JAIPUR | 50500 |
MUMBAI | 60500 |
NOIDA | 60000 |
PUNE | 65500 |
Zoals we kunnen zien, is 50500 het hoogste salaris dat wordt betaald aan een van de werknemers in de stad Jaipur, 55500 is het hoogste salaris dat wordt betaald aan een van de werknemers in de stad Chandigarh.