SQL i korthet (2)
En annan vanlig databasuppgift är aggregering – det vill säga att reducera data genom att dela upp den i grupper och sammanfatta varje grupp.
I SQL görs detta med kommandot GROUP BY. Det delar upp data i grupper och tillämpar en funktion från din SELECT-sats på varje grupp.
Om du till exempel vill räkna antalet flygningar från två olika ursprungsplatser kan du använda följande fråga:
SELECT COUNT(*) FROM flights
GROUP BY origin;
GROUP BY origin talar om för SQL att utdata ska ha en rad för varje unikt värde i kolumnen origin. SELECT-satsen anger vilka värden som ska fylla varje kolumn. Här vill vi räkna (COUNT()) alla rader i varje grupp.
Det går att gruppera efter mer än en kolumn med GROUP BY. Då får den resulterande tabellen en rad för varje kombination av unika värden i de valda kolumnerna. Följande fråga räknar antalet flygningar från SEA och PDX till varje destinationsflygplats:
SELECT origin, dest, COUNT(*) FROM flights
GROUP BY origin, dest;
Utdata får en rad för varje kombination av värdena i origin och dest (dvs. en rad för varje ursprung och destination som en flygning trafikerade). Det finns också en kolumn med COUNT() för alla rader i varje grupp.
Kom ihåg att du kan hitta en mer djupgående genomgång av SQL här.
Vilken information hämtar den här frågan? Tabellen flights innehåller information om flygningar som avgick från PDX och SEA under 2014 och 2015. Observera att funktionen AVG() beräknar medelvärdet för en kolumn!
SELECT AVG(air_time) / 60 FROM flights
GROUP BY origin, carrier;
Den här övningen är en del av kursen
Grunderna i PySpark
Interaktiv övning med praktiskt arbete
Gör teori till handling med en av våra interaktiva övningar
Starta övningen