Verschil tussen groeperen op en sorteren op in SQL

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 15 Kunnen 2024
Anonim
SQL GROUP BY vs. ORDER BY
Video: SQL GROUP BY vs. ORDER BY

Inhoud


SQL maakt het mogelijk om de gegevens die door de query zijn verkregen te ordenen. We hebben twee clausules voor het organiseren van de gegevens die zijn verkregen uit de query, de clausule Group By en Order By. Het punt dat de clausule Group By en Order By onderscheidt, is dat Groeperen op clausule wordt gebruikt wanneer we de aggregatiefunctie willen toepassen op meer dan één set tupels en Bestel bij wordt gebruikt wanneer we de gegevens willen sorteren die door de zoekopdracht zijn verkregen. Laten we enkele verschillen tussen de Group By-clausule en de Order By-clausule bespreken met behulp van de onderstaande vergelijkingstabel.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingGroeperen opBestel bij
basis-Group By wordt gebruikt om de groep te vormen van de set van de tupels.Order By wordt gebruikt om de verkregen gegevens te rangschikken naar aanleiding van een zoekopdracht in gesorteerde vorm.
Attribuut Kenmerk onder Aggregate-functie kan niet in de Group By-clausule staan.Attribuut onder aggregaat kan in Order By Clause zijn.
GrondGedaan op basis van gelijkenis tussen kenmerkwaarden.Gedaan op basis van oplopende volgorde en aflopende volgorde.

Definitie van groep volgens clausule

Geaggregeerde functies zoals gem, min, max, som, telling worden toegepast op de enkele set tupels. Als u de geaggregeerde functies wilt toepassen op de groep van de set tupels, hebben we daarvoor Group by-clausule. Group by clausule groepeert de tupels met dezelfde attribuutwaarde.


Er is één ding om onthouden over de Group By-clausule, zorg ervoor dat de attribuut onder de Groeperen op clausule moet voorkomen in de SELECT clausule maar niet onder een geaggregeerde functie. Als de Group By-clausule een kenmerk bevat dat niet onder de SELECT-clausule staat of als het zich onder de SELECT-clausule bevindt, maar onder de aggregatiefunctie, wordt de query onjuist. Daarom kunnen we zeggen dat de Group By-clausule altijd wordt gebruikt in samenwerking met de SELECT-clausule.

Laten we een voorbeeld nemen om Group By-clausule te begrijpen.

SELECT Afdeling _ID, gem. (Salaris) als gem. Salaris van docentgroep op afdeling_ID.


Je kunt zien dat in eerste instantie een tussenresultaat wordt gevormd dat de afdelingen heeft gegroepeerd.

Vervolgens wordt de geaggregeerde functie avg toegepast op elke groep afdelingen en wordt het resultaat hieronder weergegeven.

Definitie van bestelling door clausule

De clausule Order by wordt gebruikt om gegevens die door een query zijn verkregen in de gesorteerde volgorde weer te geven. Net als de Group By-clausule wordt de Order By-clausule ook gebruikt in samenwerking met de SELECT-clausule. Als u de sorteervolgorde niet vermeldt, sorteert de clausule Order by gegevens in oplopende volgorde. U kunt de oplopende volgorde opgeven als ASC en aflopende volgorde als desc.

Laten we de werking van de Order By-clausule begrijpen aan de hand van het volgende voorbeeld. We hebben een docententabel en ik zal sorteren toepassen op twee kolommen Department_Id en Salaris van de docententabel.

Selecteer Afdelings-ID, Salaris van leraarorde Per afdelings_Id oplopend, Salaris afl.

U kunt zien dat het eerst de afdeling _ID in oplopende volgorde rangschikt en vervolgens de salarissen in dezelfde afdeling in aflopende volgorde.

  1. Group By-clausule groepeert de set tupels in een relatie die onder de SELECT-clausule vallen. Aan de andere kant sorteert de clausule Order By het resultaat van de zoekopdracht in oplopende of aflopende volgorde.
  2. Het attribuut onder geaggregeerde functie kan niet onder de Group By-clausule vallen, terwijl het attribuut onder geaggregeerde functie aanwezig kan zijn onder de Order By-clausule.
  3. Het groeperen van tupels gebeurt op basis van gelijkenis tussen de attribuutwaarden van de tupels. Aan de andere kant gebeurt het bestellen of sorteren op basis van oplopende volgorde of aflopende volgorde.

Gevolgtrekking:

Als u de groep van de set tupels wilt vormen, moet u de clausule Group By gebruiken. Als u de gegevens van een enkele kolom of meer dan één kolom in de set tupels in oplopende of aflopende volgorde wilt rangschikken, moet de clausule Order By worden gebruikt.