sql >> Database teknologi >  >> RDS >> Database

GRUPPER EFTER vs. BESTIL EFTER

GROUP BY-udtrykket og ORDER BY-udtrykket i SQL bruges til at arrangere data opnået af SQL-forespørgsler. Den vigtige forskel mellem GROUP BY-udtrykket og ORDER BY-udtrykket er, at GROUP BY-udtrykket anvendes, når vi ønsker at bruge en aggregeret funktion i SQL-forespørgsel på mere end ét sæt rækker. I modsætning hertil anvendes ORDER BY-klausulen, når vi ønsker at modtage de data, der er opnået ved forespørgslen, i sorteret rækkefølge. Før vi går hen imod sammenligningsdiagrammer, vil vi først forstå disse SQL-sætninger.

GRUPPER EFTER klausul

GROUP BY-sætningen i SQL bruger forespørgsler til at arrangere data inden for attributværdier. Normalt bruger vi GROUP BY-sætningen med SELECT-sætningen. Vi skal altid placere GROUP BY-sætningen efter WHERE-sætningen. Derudover er det også pacet før ORDER BY-klausulen.

Vi kan ofte bruge GROUP BY-sætningen med aggregerede funktioner som SUM, AVG, MIN, MAX og COUNT til at producere output fra databasen. Forespørgslen til GROUP BY-sætningen er en grupperet forespørgsel, og den returnerer en enkelt række for hvert grupperet objekt.

Nedenfor er syntaksen til at bruge GROUP BY-klausulen i en SQL-forespørgsel

SELECT COLUMNNAME, FUNCTION(COLUMNNAME) FROM TABLENAME WHERE CONDITION GROUP BY COLUMNNAME;

Lad os forstå GROUP BY-klausulen ved hjælp af et par eksempler. Overvej følgende tabeller sammen med de givne poster.

Tabel:Medarbejdere

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING MANAGERID WORKING_HOURS KØN
1001 VAIBHAVI MISHRA 65.000 PUNE ORACLE 1 12 F
1002 VAIBHAV SHARMA 60.000 NOIDA ORACLE 1 9 M
1003 NIKHIL VANI 50.000 JAIPUR FMW 2 10 M
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1 10 F
2002 BHAVESH JAIN 65500 PUNE FMW 2 12 M
2003 RUCHIKA JAIN 50.000 MUMBAI TEST 4 9 F
3001 PRANOTI SHENDE 55500 PUNE JAVA 3 9 F
3002 ANUJA HVOR 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3 12 M
4001 RAJESH GOUD 60500 MUMBAI TEST 4 10 M

Eksempel 1: Antag, at vi ønsker at vide, at medarbejdere summerer løn i en bestemt by for ovenstående data. For at gøre dette vil vi udføre nedenstående forespørgsel som følger:

SELECT CITY, SUM(SALARY) FROM EMPLOYEES GROUP BY CITY;

Denne forespørgsel dannede oprindeligt et resultat, der har grupperet byen. Dernæst SUM funktion udføres på hver gruppe af byer, og endelig vil vi få de ønskede resultater som vist nedenfor:

Eksempel 2: Antag, at vi ønsker at kende medarbejdernes maksimale løn i en bestemt afdeling for ovenstående data. For at gøre dette vil vi udføre nedenstående forespørgsel som følger:

SELECT DEPARTMENT, MAX(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;

Denne forespørgsel dannede oprindeligt et resultat, der har grupperet afdelingen. Dernæst MAX funktion udføres på hver gruppe af afdelingen, og til sidst vil vi få de ønskede resultater som vist nedenfor:

ORDER BY Klausul

GROUP BY-udtrykket og ORDER BY-udtrykket kunne bruges sammen med SELECT-sætningen. I SQL-forespørgsler brugte vi ORDER BY-udtrykket til at sortere de poster, der returneres af forespørgslen, i stigende eller faldende rækkefølge. Hvis vi ikke nævnte sorteringsrækkefølgen, ville hele resultatet blive sorteret som standard i stigende rækkefølge.

Nedenfor er syntaksen til at bruge ORDER BY-klausulen i en SQL-forespørgsel

SELECT * FROM TABLENAME ORDER BY [ASC | DESC];

Lad os forstå ORDER BY-klausulen ved hjælp af et par eksempler. Overvej følgende tabeller sammen med de givne poster.

Tabel:Medarbejdere

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING MANAGERID WORKING_HOURS KØN
1001 VAIBHAVI MISHRA 65.000 PUNE ORACLE 1 12 F
1002 VAIBHAV SHARMA 60.000 NOIDA ORACLE 1 9 M
1003 NIKHIL VANI 50.000 JAIPUR FMW 2 10 M
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1 10 F
2002 BHAVESH JAIN 65500 PUNE FMW 2 12 M
2003 RUCHIKA JAIN 50.000 MUMBAI TEST 4 9 F
3001 PRANOTI SHENDE 55500 PUNE JAVA 3 9 F
3002 ANUJA HVOR 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3 12 M
4001 RAJESH GOUD 60500 MUMBAI TEST 4 10 M

Eksempel 1: Antag, at vi ønsker at arrangere resultatet i den sorterede rækkefølge, enten stigende eller faldende, baseret på fornavnskolonnen. I så fald vil vi gerne bruge ORDER BY-klausulen for at få resultatet. For at gøre dette vil vi udføre nedenstående forespørgsel som følger:

SELECT * FROM EMPLOYEES ORDER BY FIRST_NAME ASC;

Nøgleforskel mellem GROUP BY og ORDER BY

Følgende er de punkter, der skelner mellem GROUP BY- og ORDER BY-sætningerne:

  • GROUP BY-sætningen i SQL bruges til at gruppere posterne baseret på en lignende værdi i en bestemt kolonne. På den anden side bruges ORDER BY-sætningen i SQL til at sortere visningsresultaterne i stigende eller faldende rækkefølge.
  • Når du udfører en forespørgsel ved hjælp af GROUP BY-sætningen i SQL-forespørgsel, er det obligatorisk at bruge aggregatfunktionen. På den anden side, mens du bruger ORDER BY-sætningen i SQ, er det ikke obligatorisk at bruge en aggregeret funktion.
  • GROUP BY-udtrykket placeres altid i SQL-forespørgslen efter WHERE-udtrykket, men før ORDER BY-udtrykket. På den anden side er ORDER BY-sætningen altid placeret efter GROUP BY-sætningen.

Sammenligningsdiagram

SR.NO GRUPPER EFTER BEstil efter
1 GROUP BY-sætningen bruges til at gruppere rækkerne med lignende værdier. ORDER BY-sætningen bruges til at sortere resultatet enten i faldende eller stigende rækkefølge
2 Det styrer præsentationen af ​​rækker Det styrer præsentationen af ​​kolonner
3 GROUP BY-klausulen er altid placeret før ORDER BY-klausulen. ORDER BY-klausulen placeres altid efter GROUP BY-klausulen.
4 Det er obligatorisk at bruge en aggregeret funktion Ikke obligatorisk for at bruge en aggregeret funktion
5 Attributten kan ikke være under aggregatfunktionen i GROUP BY-sætningen. Attributten kan være under aggregatfunktionen i ORDER BY-sætningen.


  1. Sådan fungerer LOG() i MariaDB

  2. SQL Server Cursor Types - KEYSET Cursor | SQL Server Tutorial / TSQL Tutorial

  3. OracleException (0x80004005) Når du opretter forbindelse til Oracle-databasen

  4. ORA-01438:værdi større end den specificerede præcision tilladt for denne kolonne, når der indsættes 3