U kunt standaard SQL-queries gebruiken om gegevens uit een database op te halen, maar dit biedt vaak niet genoeg informatie om aan de bedrijfsvereisten te voldoen. SQL biedt u ook de mogelijkheid om queryresultaten te groeperen op basis van attributen op rijniveau om geaggregeerde functies toe te passen met behulp van de GROUP BY-component. Beschouw bijvoorbeeld een tabel met ordergegevens die bestaat uit de onderstaande kenmerken:
- Order ID - een numerieke waarde die elke bestelling uniek identificeert. Dit veld is de primaire sleutel voor de database.
- Verkoper - een tekstwaarde met de naam van de verkoper die de producten heeft verkocht. Dit veld is een externe sleutel voor een andere tabel met personeelsinformatie.
- Klanten ID - een numerieke waarde die overeenkomt met een klantaccountnummer. Dit veld is ook een externe sleutel, die verwijst naar een tabel met klantaccountinformatie.
- Omzet - een numerieke waarde die overeenkomt met het dollarbedrag van de verkoop.
Wanneer het tijd is om prestatiebeoordelingen voor verkopers uit te voeren, bevat de tabel Orders waardevolle informatie die voor die beoordeling kan worden gebruikt. Wanneer u Jim evalueert, kunt u bijvoorbeeld een eenvoudige query schrijven die alle verkooprecords van Jim ophaalt:
SELECT *
VAN Bestellingen
WAAR verkoper als 'Jim'
Hiermee worden alle records uit de database opgehaald die overeenkomen met verkopen van Jim: OrderID Verkoper Klantnummer Inkomsten
12482 Jim 182 40000
12488 Jim 219 25000
12519 Jim 137 85000
12602 Jim 182 10000
12741 Jim 155 90000
U zou deze informatie kunnen bekijken en enkele handmatige berekeningen kunnen uitvoeren om met prestatiestatistieken te komen, maar dit zou een vervelende taak zijn die u voor elke verkoper in het bedrijf zou moeten herhalen. In plaats daarvan kunt u dit werk vervangen door een enkele GROUP BY-query waarmee statistieken worden berekend voor elke verkoper in het bedrijf. U schrijft gewoon de query en geeft aan dat de database de resultaten moet groeperen op basis van het veld Verkoper. U kunt dan een van de SQL-aggregatiefuncties gebruiken om berekeningen uit te voeren op de resultaten. Hier is een voorbeeld. Als u de volgende SQL-instructie hebt uitgevoerd: SELECTEER verkoper, SUM (omzet) ALS 'Totaal', MIN (Opbrengst) ALS 'Kleinst', MAX (Opbrengst) ALS 'Grootste', AVG (Opbrengst) ALS 'Gemiddeld', COUNT (Opbrengst) ALS 'Nummer'
VAN Bestellingen
GROEP DOOR verkoper
U krijgt de volgende resultaten: Verkoper Totaal kleinste grootste gemiddelde aantal
Jim 250000 10000 90000 50000 5
Mary 342000 24000 102000 57000 6
Bob 118000 4000 36000 39333 3
Zoals u kunt zien, kunt u met deze krachtige functie kleine rapporten genereren vanuit een SQL-query, waarmee waardevolle bedrijfsinformatie wordt verstrekt aan de manager die de prestatiereviews uitvoert. De GROUP BY-component wordt vaak gebruikt in databases voor dit doel en is een waardevol hulpmiddel in de zak met trucs van de DBA.