Guider

Så lär du dig Query-funktionen i Google Sheets

GSHTS

Visste du att Google Sheets, som även kallas för Google Kalkylark har en Query-funktion?

Query-funktionalitet finns tillgänglig i Sheets, och det är den i särklass mest kraftfulla funktionen du kan använda dig av.

Query-funktionen använder sig av pseudo-SQL-kod, som är ett programmeringsspråk som man använder sig av för att kommunicera med databaser. Det tar en stund att lära sig Query-funktionen i Google Kalkylark, men när du väl gjort så kommer du bli varse om att den kan användas till precis vad som helst.

Lär dig allt om Query i Google Kalkylark

Steg 1: Om du vill kunna hänga med i guiden; klicka på den länk som återfinns nedan för att ta del av en egen kopia av exempelkalkylen.

En kopia av kalkylen finns att hämta här.

Dokumentet ser ut enligt följande:

Speglad tabell med Query funktion

Steg 2: Markera hela tabellen genom att ange CTRL + A (för Windows) eller CMD + A (för MacOS).

Läs mer: Så kan du söka efter många domännamn samtidigt

Markera hela tabellen 1

Steg 3: Klicka på Data och välj därefter Named ranges varpå du tas till en ny vy.

Data named ranges

Steg 4: Döp cellerna till stader, så att du kan referera till dem på ett enkelt sätt. Klicka därefter på Done.

Stader

Steg 5: Den Pseudo-SQL-kod man använder sig av när man arbetar med en Query är uppbyggd enligt följande:

=QUERY(stader,"din Pseudo-SQL-kod här",1)

Eller mer specifikt:

  • =Query: Formeln.
  • stader: De celler du refererar till.
  • “din Pseudo-SQL-kod här” = De regler som ska gälla.

Då sätter vi igång på allvar, håll i hatten!

Spegla alla celler med en Query-förfrågan i Google Sheets

Steg 6: Markera en cell till höger om tabellen, förslagsvis F1. Hämta alla tabelldata genom att uppge:

=QUERY(stader,"SELECT *",1)

Påminnelse: Kommandot SELECT * ser till att du hämtar alla data från alla kolumner.

Du får tack vare detta kommando ta del av en identisk, det vill säga speglad tabell.

Speglad tabell

Du har nu skrivit och exekverat ditt första Query-kommando i Google Kalkylark, och förtjänar därför en klapp på axeln.

Snyggt jobbat!

Så visar du utvalda kolumner

Steg 7: För att endast ta fram specifika kolumner måste du modifiera formeln en aning. Använd dig av denna formel:

=QUERY(stader,"SELECT B, D",1)

För att visa upp alla data från kolumnerna Tätort samt Befolkning.

2 rader pa Google Sheets forfragan

Du sätter upp villkor med WHERE-klausulen

Steg 8: Med klausulen WHERE kan du specificera villkor för den data som ska visas upp. För att endast ta fram svenska städer med över 100 000 invånare kan du använda dig av den Query-sträng som anges nedan:

=QUERY(stader,"SELECT B, D WHERE D > 100000",1)

Stader med over 100 000 invanare sorterade via sheets

Steg 9: Nu ska vi använda oss av WHERE-klausulen för att visa upp samtliga av de städer i tabellen som är belägna i Stockholms län, och det gör vi med hjälp av denna formeln:

=QUERY(stader,"SELECT B, C, D WHERE C = 'Stockholms län' ",1)

Så här ser tabellen ut efter att du uppgett den kodsträng som återfinns ovan.

Output tabell sorterad med query

Mer djupgående förklaring: Vi tar fram data från kolumnerna B, C och D med hjälp av SELECT. Därefter sätter vi upp ett villkor för kolumnen C,  som inkluderar alla städer som är belägna i Stockholms län.

ORDER BY-klausulen

Klausulen ORDER BY är behjälplig för att sortera data, och ska alltid uppges efter både SELECT och WHERE.

Steg 10: Nu ska vi använda oss av ORDER BY för att sortera städerna utefter invånarantalet. ASC innebär att du sorterar från lågt till högt, och DESC medför att du sorterar från högt till lågt. Nedan uppger vi en kodsträng som visar upp de mest befolkningsrika städerna först.

=QUERY(stader,"SELECT B, C, D ORDER BY D DESC",1)

Som väntat är det fortfarande Stockholm, Göteborg och Malmö som har de högsta invånarantalen.

Storsta stader enligt formel

Om du istället vill visa upp städerna i bokstavsordning är det nedanstående sträng som gäller:

=QUERY(stader,"SELECT B, C, D ORDER BY B ASC",1)

Sortera stader med sheets

Nu är det uppstyrt och fint – Borås först och Örebro sist!

LIMIT-klausulen

Med villkoret LIMIT uppger du hur många celler du vill visa. LIMIT uppges alltid efter SELECT, WHERE och ORDER BY.

Steg 11: Ange följande LIMIT-baserade sträng för att enbart visa upp 5 resultat.

=QUERY(stader,"SELECT B, C, D ORDER BY D ASC LIMIT 5",1)

Limit med Sheets

Query-kommandot och matematiska formler

Det går utmärkt att få svar på enklare matematiska formler med hjälp av en QUERY-sträng. Nu ska vi ta reda på hur folkrika de svenska städerna är i förhållande till hela Sveriges population, som i skrivande stund uppgår till 10 327 589 medborgare.

Steg 12: Vi ska nu dividera alla data i kolumn C med 10 327 589, och därefter lägga till * 100 för att bli varse om den procentsats som gäller. Formeln lyder:

=QUERY(stader,"SELECT B, C, (D/10327589*100) ",1)

Mer specifikt delar vi värdet i kolumn D (stadens befolkning) med hela Sveriges befolkning, och multiplicerar resultatet med 100 för att få rätt procentsats.

Befolkning sorterad i Google Sheets

Tillägg: Jag har justerat dokumentet för att endast ett decimaltecken ska visas upp.

Minska decimaltal i Sheets

LABEL-klausulen

Den cell som befinner sig till höger om Län är ganska bedrövlig. Där ska det ju stå något beskrivande såsom Befolkning i %, och inte en massa konstiga siffror. Detta problem löser vi med hjälp av klausulen LABEL, vars villkor ska placeras sist i kodsträngen.

Steg 13: Använd kodsträngen nedan för att göra tabellen såväl snyggare som mer begriplig:

=QUERY(stader,"SELECT B, C, (D/10327589) *100 LABEL (D/10327589) * 100 'Befolkning i %'",1)

Befolkning i

Aggregerade funktioner

I en Google Kalkylark-Query kan du även använda dig av matematiska funktioner för att exempelvis räkna ut max- minimi- och medelvärden.

Steg 14: Med den kodsträng som anges nedan räknar vi ut max- minimi- och medelvärden för kolumn D, där befolkningsmängden uppges.

=QUERY(stader,"SELECT max(D), min(D), avg(D)",1)

Befolkning

GROUP BY-klausulen

Klausulen GROUP BY är lite knepig, men har du kommit så här långt så löser du detta med. Med GROUP BY kan du sammanfatta data i grupper, för att exempelvis kunna räkna ut hur många städer som återfinns i tabellens alla län.

Steg 15: Fyll i den kodsträng som uppges nedan för att räkna ut hur många städer som återfinns i varje län.

=QUERY(stader,"SELECT C, count(B) GROUP BY C",1)

Tillägg: Notera att en räknefunktion likt COUNT, MIN eller MAX måste återfinnas innan GROUP BY-klausulen för att formeln ska fungera.

Stader i sheets utrakning

Slutprovet – använd det du lärt dig

Nu ska du använda dig av nästan samtliga av de funktioner du lärt dig hitintills.

Steg 16: Uppge formeln nedan för att visa hur många städer som inkluderas i varje län, hur många som bor i den minsta respektive största staden samt vad medelbefolkningen för varje län ligger på. Avslutningsvis begränsar du tabellen till 5 celler i djupled.

=QUERY(stader,"SELECT C, count(B), min(D), max(D), avg(D) GROUP BY C ORDER BY avg(D) DESC LIMIT 5",1)

Sheets avancerad utrakning

För att göra koden mer begriplig kan du även modifiera radbrytningarna för Query-koden:

=QUERY(stader,"SELECT C, count(B), min(D), max(D), avg(D)
GROUP BY C 
ORDER BY avg(D) DESC
LIMIT 5",1)

Resultatet blir dock detsamma, oavsett hur många radbrytningar du gör.

Nu har du lärt dig en hel del om Query-funktionen, och min förhoppning är att du ansett att guiden varit lärorik. Om det är någonting som är oklart, prata gärna mer om saken i kommentarsfältet nedan.

Källor

Läs mer: Googles dokumentation om Query-kommandot

Fler guider på Teknikguiden:

Läs mer: Så fungerar IMPORTRANGE i Google Sheets

Läs mer: Så fungerar ARRAY-formler i Google Sheets

Läs mer: Så fungerar FILTER i Google Sheets

Läs mer: Så fungerar LOOKUP i Google Sheets

Läs mer: Så fungerar MATCH i Google Sheets

Läs mer: Så använder du COUNT i Google Sheets

Läs mer: Lär dig INDEX i Google Sheets

Läs mer: Lär dig VLOOKUP och TRUE i Google Sheets

Läs mer: Så kombinerar du MATCH och INDEX i Google Sheets

Lämna en kommentar