De clausule GROUP BY en ORDER BY in SQL worden gebruikt om gegevens te ordenen die zijn verkregen door SQL-query's. Het belangrijke verschil tussen de GROUP BY-clausule en ORDER BY-clausule is dat de GROUP BY-clausule wordt toegepast wanneer we een aggregatiefunctie in SQL-query's op meer dan één set rijen willen gebruiken. Daarentegen wordt de ORDER BY-component toegepast wanneer we de gegevens die door de query zijn verkregen in de gesorteerde volgorde willen ontvangen. Voordat we naar vergelijkingsgrafieken gaan, zullen we eerst deze SQL-clausules begrijpen.
GROEP OP clausule
De GROUP BY-instructie in SQL gebruikt query's om gegevens binnen kenmerkwaarden te rangschikken. Meestal gebruiken we de GROUP BY-clausule met de SELECT-instructie. We moeten de GROUP BY-clausule altijd na de WHERE-clausule plaatsen. Bovendien wordt het ook versneld vóór de ORDER BY-component.
We kunnen vaak de GROUP BY-component gebruiken met geaggregeerde functies zoals SUM, AVG, MIN, MAX en COUNT om uitvoer uit de database te produceren. De query voor de GROUP BY-component is een gegroepeerde query en retourneert een enkele rij voor elk gegroepeerd object.
Hieronder staat de syntaxis om de GROUP BY-clausule te gebruiken in een SQL-query
SELECT COLUMNNAME, FUNCTION(COLUMNNAME) FROM TABLENAME WHERE CONDITION GROUP BY COLUMNNAME;
Laten we de GROUP BY-clausule begrijpen aan de hand van enkele voorbeelden. Bekijk de volgende tabellen samen met de gegeven records.
Tabel:Medewerkers
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID | WORKING_HOURS | GENDER |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORAKLE | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORAKLE | 1 | 9 | M |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 | 10 | F |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | TESTEN | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | WAAR | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 | 10 | M |
Voorbeeld 1: Stel dat we willen weten dat werknemers het salaris in een bepaalde stad optellen voor de bovenstaande gegevens. Om dit te doen, zullen we de onderstaande query als volgt uitvoeren:
SELECT CITY, SUM(SALARY) FROM EMPLOYEES GROUP BY CITY;
Deze zoekopdracht vormde aanvankelijk een resultaat dat de stad heeft gegroepeerd. Vervolgens de SUM functie wordt uitgevoerd op elke groep steden, en uiteindelijk zullen we de gewenste resultaten krijgen zoals hieronder getoond:
Voorbeeld 2: Stel dat we voor de bovenstaande gegevens het maximale salaris van werknemers op een bepaalde afdeling willen weten. Om dit te doen, zullen we de onderstaande query als volgt uitvoeren:
SELECT DEPARTMENT, MAX(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;
Deze zoekopdracht vormde in eerste instantie een resultaat dat de afdeling heeft gegroepeerd. Vervolgens de MAX functie wordt uitgevoerd op elke groep van de afdeling, en uiteindelijk zullen we de gewenste resultaten krijgen, zoals hieronder weergegeven:
BESTEL PER clausule
De GROUP BY-clausule en de ORDER BY-clausule kunnen worden gebruikt met de SELECT-instructie. In SQL-query's hebben we de ORDER BY-component gebruikt om de records die door de query worden geretourneerd, in oplopende of aflopende volgorde te sorteren. Als we de sorteervolgorde niet hadden vermeld, zou het volledige resultaat standaard in oplopende volgorde worden gesorteerd.
Hieronder staat de syntaxis om de ORDER BY-clausule te gebruiken in een SQL-query
SELECT * FROM TABLENAME ORDER BY [ASC | DESC];
Laten we de ORDER BY-clausule begrijpen aan de hand van enkele voorbeelden. Bekijk de volgende tabellen samen met de gegeven records.
Tabel:Medewerkers
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID | WORKING_HOURS | GENDER |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORAKLE | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORAKLE | 1 | 9 | M |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 | 10 | F |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | TESTEN | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | WAAR | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 | 10 | M |
Voorbeeld 1: Stel dat we het resultaat in de gesorteerde volgorde willen rangschikken, oplopend of aflopend, op basis van de voornaamkolom. In dat geval willen we de ORDER BY-component gebruiken om het resultaat te krijgen. Om dit te doen, zullen we de onderstaande query als volgt uitvoeren:
SELECT * FROM EMPLOYEES ORDER BY FIRST_NAME ASC;
Belangrijk verschil tussen GROUP BY en ORDER BY
Hieronder volgen de punten die onderscheid maken tussen de clausules GROUP BY en ORDER BY:
- De GROUP BY-instructie in SQL wordt gebruikt om de records te groeperen op basis van een vergelijkbare waarde in een bepaalde kolom. Aan de andere kant wordt de ORDER BY-component in SQL gebruikt om de weergaveresultaten in oplopende of aflopende volgorde te sorteren.
- Tijdens het uitvoeren van een query met behulp van de GROUP BY-component in de SQL-query, is het verplicht om de aggregatiefunctie te gebruiken. Aan de andere kant is het bij het gebruik van de ORDER BY-clausule in SQ niet verplicht om een aggregatiefunctie te gebruiken.
- De GROUP BY-component wordt in de SQL-query altijd geplaatst na de WHERE-component maar vóór de ORDER BY-component. Aan de andere kant wordt de ORDER BY-clausule altijd achter de GROUP BY-clausule geplaatst.
Vergelijkingstabel
SR.NO | GROEPEREN OP | BESTEL DOOR |
1 | De GROUP BY-component wordt gebruikt om de rijen met vergelijkbare waarden te groeperen. | De ORDER BY-component wordt gebruikt om het resultaat in aflopende of oplopende volgorde te sorteren |
2 | Het regelt de presentatie van rijen | Het regelt de presentatie van kolommen |
3 | DE clausule GROUP BY wordt altijd vóór de clausule ORDER BY geplaatst. | ORDER BY-clausule wordt altijd geplaatst na de GROUP BY-clausule. |
4 | Het is verplicht om een aggregatiefunctie te gebruiken | Niet verplicht om een verzamelfunctie te gebruiken |
5 | Het attribuut mag niet onder de aggregatiefunctie staan | in de GROUP BY-instructie. Het attribuut kan onder de aggregatiefunctie in de ORDER BY-instructie staan. |