I denne SQL-artikel lærer vi om GROUP BY-sætningen, og hvordan man bruger den i SQL. Vi vil også diskutere brugen af GROUP BY-sætningen med WHERE-sætningen.
Hvad er GROUP BY-sætningen?
GROUP BY-sætningen er en SQL-sætning, der bruges i SELECT-sætningen til at administrere de samme poster i en kolonne i gruppen ved hjælp af SQL-funktioner.
Syntaks for GROUP BY-sætning:
SELECT columnname1, columnname2, columnname3 FROM tablename GROUP BY columnname;
Vi kan bruge flere kolonner fra tabellen i GROUP BY-sætningen.
Der er nogle trin, vi skal lære for at bruge GROUP BY-sætningen i SQL-forespørgslen:
1. Opret en ny database, eller brug en eksisterende database ved at vælge databasen ved at bruge nøgleordet USE efterfulgt af databasenavnet.
2. Opret en ny tabel i den valgte database, eller du kan bruge en allerede oprettet tabel.
3. Hvis tabellen er nyoprettet, skal du indsætte posterne i den nyoprettede database ved hjælp af INSERT-forespørgslen og se de indsatte data ved hjælp af SELECT-forespørgslen uden GROUP BY-sætningen.
4. Nu er vi klar til at bruge GROUP BY-sætningen i SQL-forespørgslerne.
Trin 1:Opret en ny database, eller brug en allerede oprettet database.
Jeg har allerede oprettet en database. Jeg vil bruge mit eksisterende oprettede databasenavn, Company.
USE Company;
Firma er databasenavnet.
De, der ikke har oprettet en database, følg nedenstående forespørgsel for at oprette databasen:
CREATE DATABASE database_name;
Når du har oprettet databasen, skal du vælge databasen ved at bruge nøgleordet USE efterfulgt af databasenavnet.
Trin 2:Opret en ny tabel, eller brug allerede eksisterende tabel:
Jeg har allerede lavet en tabel. Jeg vil bruge den eksisterende tabel med navnet Medarbejdere.
For at oprette de nye tabeller, følg nedenstående CREATE TABLE syntaks:
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Trin 3:Indsæt posterne i den nyoprettede tabel ved hjælp af INSERT-forespørgslen, og se posterne ved hjælp af SELECT-forespørgslen.
Brug følgende syntaks til at indsætte nye poster i tabellen:
INSERT INTO table_name VALUES(value1, value2, value3);
Brug følgende syntaks til at se posterne fra tabellen:
SELECT * FROM table_name;
Følgende forespørgsel viser medarbejdernes optegnelser:
SELECT * FROM Employees;
Outputtet af ovenstående SELECT-forespørgsel er:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60.000 | 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 | GOUD | 60500 | MUMBAI | TEST | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
5002 | SANKET | CHAUHAN | 70.000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TEST | 4 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6003 | NIKITA | INGALE | 65.000 | HYDERABAD | ORACLE | 1 |
Trin 4:Vi er klar til at bruge GROUP BY-sætningen i forespørgslerne
Vi vil nu tage et dybt dyk ned i GROUP BY-sætningen ved hjælp af eksempler
Eksempel 1: Skriv en forespørgsel for at få vist medarbejderregistreringerne grupperet efter by.
SELECT * FROM EMPLOYEES GROUP BY CITY;
Ovenstående forespørgsel viser medarbejdernes poster, hvor en medarbejder fra samme by vil blive betragtet som én gruppe. For eksempel, hvis der er 10 ansatte poster i tabellen, hvor 3 er fra Pune by, 3 er fra Mumbai by, 2 er fra Hyderabad og Bangalore, så vil ovenstående forespørgsel gruppere Pune by medarbejder Mumbai by medarbejder som én post, og så videre .
Outputtet af ovenstående forespørgsel:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TEST | 4 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI | ORACLE | 1 |
5002 | SANKET | CHAUHAN | 70.000 | HYDERABAD | JAVA | 3 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | C# | 5 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
Som vi kan se, er medarbejdernes poster grupperet efter by, og poster vises som standard i stigende rækkefølge.
Eksempel 2: Skriv en forespørgsel for at vise medarbejdernes optegnelser grupperet efter løn i faldende rækkefølge.
SELECT * FROM EMPLOYEES GROUP BY SALARY DESC;
Ovenstående forespørgsel viser medarbejdernes poster, hvor medarbejdere med samme løn vil blive betragtet som én gruppe, og poster vil blive vist i faldende rækkefølge.
Outputtet fra ovenstående forespørgsel:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
5002 | SANKET | CHAUHAN | 70.000 | HYDERABAD | JAVA | 3 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
6003 | NIKITA | INGALE | 65.000 | HYDERABAD | ORACLE | 1 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TEST | 4 |
1002 | VAIBHAV | SHARMA | 60.000 | 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 |
Som vi kan se, er medarbejdernes poster grupperet efter løn, og poster vises i faldende rækkefølge, som vi nævner desc til sidst.
Eksempel 3: Skriv en forespørgsel for at vise medarbejdernes optegnelser grupperet efter løn og by.
SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;
Ovenstående forespørgsel viser medarbejdernes poster, hvor medarbejdere med samme løn og by vil blive betragtet som én gruppe.
Antag for eksempel, at tabellen havde 10 medarbejderposter. Fra 10 ansatte 2 medarbejderes løn og by matcher med andre to ansatte og resten seks medarbejdere løn og by er umatchede, så vil de 6 medarbejdere blive betragtet som 6 separate grupper, og 2 medarbejdere der matcher med andre 2 medarbejdere vil blive betragtet som én gruppe . Kort sagt vil der blive dannet 8 grupper.
Outputtet fra ovenstående forespørgsel:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | 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 | TEST | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TEST | 4 |
6003 | NIKITA | INGALE | 65.000 | HYDERABAD | ORACLE | 1 |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
5002 | SANKET | CHAUHAN | 70.000 | HYDERABAD | JAVA | 3 |
Som vi kan se, er medarbejdernes poster grupperet efter løn og by, og poster vises som standard i stigende rækkefølge.
Eksempel 4: Skriv en forespørgsel for at vise medarbejdernes optegnelser efter by og afdeling.
SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;
Ovenstående forespørgsel viser medarbejdernes registreringer, hvor medarbejdere er i samme by, og afdelingen vil blive betragtet som én gruppe.
Outputtet fra ovenstående forespørgsel:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TEST | 4 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
5002 | SANKET | CHAUHAN | 70.000 | HYDERABAD | JAVA | 3 |
6003 | NIKITA | INGALE | 65.000 | 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 | GOUD | 60500 | MUMBAI | TEST | 4 |
1002 | VAIBHAV | SHARMA | 60.000 | 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 |
Som vi kan se, er medarbejdernes registreringer grupperet efter by og afdeling, og poster vises som standard i stigende rækkefølge.
Eksempel 5: Skriv en forespørgsel for at tælle listen over medarbejdere i hver afdeling fra medarbejdernes tabel.
SELECT DEPARTMENT, COUNT(DEPARTMENT) FROM EMPLOYEES GROUP BY DEPARTMENT;
Ovenstående forespørgsel viser antallet af medarbejdere i hver afdelingsgruppe efter afdelingen. Ligesom seks medarbejdere arbejder i HR-afdelingen, arbejder fem i en anden afdeling.
Outputtet fra ovenstående forespørgsel:
AFDELING | COUNT(AFDELING) |
C# | 4 |
FMW | 3 |
JAVA | 4 |
ORACLE | 4 |
TEST | 3 |
Som vi kan se, arbejder fire medarbejdere i C#-afdelingen, tre arbejder i FMW-afdelingen osv.
Eksempel 6: Skriv en forespørgsel for at tælle listen over medarbejdere fra hver by fra medarbejdernes tabel.
SELECT CITY, COUNT(CITY) FROM EMPLOYEES GROUP BY CITY;
Ovenstående forespørgsel viser antallet af ansatte i hver bygruppe efter by. Ligesom tre ansatte arbejder fra Pune by, fire arbejder fra en anden by og så videre.
Outputtet af ovenstående forespørgsel:
BY | COUNT(BY) |
BANGALORE | 2 |
CHANDIGARH | 2 |
DELHI | 2 |
HYDERABAD | 2 |
JAIPUR | 2 |
MUMBAI | 3 |
NOIDA | 2 |
PUNE | 3 |
Som vi kan se, arbejder to medarbejdere fra Bangalore by, tre arbejder fra Mumbai by og så videre.
Eksempel 7: Skriv en forespørgsel for at summere medarbejdernes løngruppe efter byen.
SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY;
Ovenstående bruges til at summere medarbejdernes lønninger grupperet efter bynavn. For eksempel, for ansatte fra samme by, vil deres løn være summen og betragtes som én gruppe. Vi brugte funktionen samlet sum efterfulgt af lønkolonnen til at tilføje løn.
Outputtet fra ovenstående forespørgsel:
BY | LØN |
BANGALORE | 115.000 |
CHANDIGARH | 104000 |
DELHI | 115500 |
HYDERABAD | 135.000 |
JAIPUR | 101000 |
MUMBAI | 169000 |
NOIDA | 114500 |
PUNE | 186500 |
Som vi kan se, er Bangalore bysumsløn 115.000, Chandigarh bysumløn er 104.000, hvilket er en tilføjelse af forskellig medarbejderløn, men fra byen bruges den samme tilgang for hver by.
Eksempel 8: Skriv en forespørgsel for at finde minimumslønnen fra hver afdeling.
SELECT DEPARTMENT, MIN(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;
Ovenstående forespørgsel bruges til at finde medarbejderens minimumsløn fra hver afdeling. En af medarbejderne fra Java-afdelingens løn er 54500,- hvilket er det laveste i over hele java-afdelingen. Samme 48500 er den laveste løn, der udbetales til medarbejderen i C#-afdelingen.
Outputtet fra ovenstående forespørgsel:
AFDELING | MIN(LØN) |
C# | 48500 |
FMW | 50500 |
JAVA | 54500 |
ORACLE | 55500 |
TEST | 54500 |
Som vi kan se, er 50500 den laveste løn, der udbetales til en af medarbejderne i FMW-afdelingen, 55500 er den laveste løn, der udbetales til en af medarbejderne i ORACLE-afdelingen.
Eksempel 9: Skriv en forespørgsel for at finde minimumslønnen fra hver by.
SELECT CITY, MAX(SALARY) FROM EMPLOYEES GROUP BY CITY;
Ovenstående forespørgsel bruges til at finde den maksimale løn fra hver by. En af de ansatte fra Pune-byens løn er 65.500, hvilket er den højeste i hele Pune-byen, samme 60.500 er den højeste løn, der betales til medarbejderen i Mumbai-byen.
Outputtet af ovenstående forespørgsel:
BY | MAX(LØN) |
BANGALORE | 60500 |
CHANDIGARH | 55500 |
DELHI | 60.000 |
HYDERABAD | 70.000 |
JAIPUR | 50500 |
MUMBAI | 60500 |
NOIDA | 60.000 |
PUNE | 65500 |
Som vi kan se, er 50500 den højeste løn, der betales til en af medarbejderne i Jaipur by, 55500 er den højeste løn, der betales til en af medarbejderne i Chandigarh by.