Du kan använda grundläggande SQL-frågor för att hämta data från en databas, men det ger ofta inte tillräckligt med intelligens för att uppfylla företagets krav. SQL ger dig också möjlighet att gruppera sökresultat baserat på radnivåattribut för att kunna tillämpa aggregatfunktioner med GROUP BY-klausulen. Tänk på exempelvis en orderdatabord bestående av attributen nedan:
- OrderID - ett numeriskt värde som unikt identifierar varje order. Detta fält är den primära nyckeln för databasen.
- Försäljare - Ett textvärde som anger namnet på säljaren som sålde produkterna. Detta fält är en främmande nyckel till en annan tabell som innehåller personuppgifter.
- Kundnummer - ett numeriskt värde som motsvarar ett kundkontonummer Detta fält är också en utländsk nyckel, hänvisar till en tabell som innehåller kundkontoinformation.
- Inkomst - ett numeriskt värde motsvarande dollarns belopp av försäljningen
När det är dags att genomföra resultatöversikter för säljare, innehåller beställningstabellen värdefull information som kan användas för översynen. När du utvärderar Jim kan du till exempel skriva en enkel fråga som hämtar alla Jims försäljningsrekord:
VÄLJ *
FRÅN beställningar
Var Säljare Som 'Jim'
Detta skulle hämta alla poster från databasen som motsvarar försäljningen från Jim: OrderID-säljare KundID-intäkter
12482 Jim 182 40000
12488 Jim 219 25000
12519 Jim 137 85000
12602 Jim 182 10000
12741 Jim 155 90000
Du kan granska den här informationen och utföra några manuella beräkningar för att komma fram till resultatstatistik, men det skulle vara en tråkig uppgift som du måste repetera för varje säljare i företaget. Istället kan du ersätta det här arbetet med en enda GROUP BY-fråga som beräknar statistik för varje säljare i företaget. Du skriver helt enkelt frågan och anger att databasen ska gruppera resultaten baserat på säljaren fältet. Du kan då använda någon av SQL-aggregatfunktionerna för att utföra beräkningar på resultaten. Här är ett exempel. Om du genomförde följande SQL-stämning: SELECT Säljare, SUM (Intäkter) AS "Totalt", MIN (Intäkter) AS "Minsta", MAX (Intäkter) AS "Största", AVG (Intäkter) AS "Genomsnitt", COUNT (Intäkter) AS "Antal"
FRÅN beställningar
GROUP BY Säljare
Du skulle få följande resultat: Säljare Total Minsta Stora Medelantalet
Jim 250000 10000 90000 50000 5
Mary 342000 24000 102000 57000 6
Bob 118000 4000 36000 39333 3
Som du kan se, kan du med denna kraftfulla funktion generera små rapporter från en SQL-fråga, vilket ger värdefull affärsinformation till chefen som utför prestationsrecensionerna. GROUP BY-klausulen används ofta i databaser för detta ändamål och är ett värdefullt verktyg i DBAs väska med tricks.