# De QUERY-functie in Google Sheets: SQL-achtige zoekopdrachten De QUERY-functie in Google Sheets brengt de kracht van SQL naar je spreadsheet. In een enkele cel filter, sorteer en groepeer je grote hoeveelheden data zonder dat je rijen handmatig hoeft te selecteren. De opbouw is `=QUERY(bereik; querytekst)`. Het bereik is je data en de querytekst is een opdracht in de Google Visualisatie-querytaal. Die taal lijkt sterk op SQL, maar verwijst naar kolommen met letters zoals A, B en C in plaats van met kolomnamen. [[TOC]] ## De basisclausules Een query bestaat uit clausules die je achter elkaar zet. De volgorde ligt vast: eerst `select`, dan `where`, dan `group by`, dan `order by` en als laatste `limit`. | Clausule | Wat doet het | Voorbeeld | | --- | --- | --- | | `select` | Kiest kolommen | `select A, B` | | `where` | Filtert rijen | `where C > 100` | | `group by` | Groepeert | `group by A` | | `order by` | Sorteert | `order by B desc` | | `limit` | Beperkt het aantal | `limit 10` | Een complete query ziet er zo uit: `=QUERY(A1:D100; "select A, C where C > 100 order by C desc limit 5")`. Dit toont de vijf rijen met de hoogste waarde in kolom C. :::tip title="Querytekst tussen aanhalingstekens" Zet de querytekst altijd tussen aanhalingstekens en gebruik kolomletters, niet de koptekst. Sheets kent de kolommen alleen via hun letter binnen het opgegeven bereik. Gebruik je een Nederlandse locale, dan scheid je de argumenten met een puntkomma; in een Engelse locale met een komma. ::: ## Filteren en groeperen De `where`-clausule filtert op voorwaarden. De `group by`-clausule vat samen, bijvoorbeeld om de omzet per regio op te tellen. :::howto title="Omzet per regio optellen" 1. Zet de regio's in kolom A en de bedragen in kolom B. 2. Klik in een lege cel. 3. Typ `=QUERY(A1:B100; "select A, sum(B) group by A order by sum(B) desc")`. 4. Druk op Enter. Sheets toont per regio het opgetelde bedrag, van hoog naar laag. ::: :::info title="Regel voor group by" In een `group by`-query moet elke kolom in de `select` ofwel in de `group by` staan ofwel een aggregatie zijn zoals `sum`, `avg`, `count` of `max`. Anders geeft Sheets een foutmelding over een onjuiste groepering. ::: ## QUERY combineren met andere functies QUERY wordt nog krachtiger in combinatie met andere functies, bijvoorbeeld om data uit een ander bestand te halen of om op datum en tekst te filteren. **Met IMPORTRANGE.** Wikkel IMPORTRANGE in QUERY: `=QUERY(IMPORTRANGE("sheet-url"; "Blad1!A:D"); "select Col1, Col3 where Col3 > 100")`. Let op dat je hier `Col1` en `Col3` gebruikt in plaats van letters. **Met een datumfilter.** Filter op datum met het `date`-trefwoord: `=QUERY(A1:C100; "select A, C where B > date '2026-01-01'")` toont alleen rijen na die datum. De notatie is altijd jaar-maand-dag. **Met tekst zoeken.** Gebruik `contains` of `like`: `=QUERY(A1:B100; "select A where A contains 'Amsterdam'")` filtert op een tekstdeel. :::warn title="IMPORTRANGE gebruikt Col-verwijzingen" Combineer je QUERY met IMPORTRANGE, dan verwijs je naar kolommen met `Col1`, `Col2` enzovoort in plaats van met A, B. Dat is een veelgemaakte fout die een lege of foutieve uitkomst geeft. ::: ## Veelvoorkomende valkuilen Een paar dingen die vaak misgaan bij QUERY: - **Gemengde datatypes in een kolom.** Staan er getallen en tekst door elkaar in dezelfde kolom, dan negeert QUERY soms een deel van de waarden. Maak de kolom consistent of dwing het type af. - **Koptekst meegeteld.** Voeg eventueel `label`-clausules toe of geef een extra argument mee voor het aantal kopregels, zodat je kop niet als data wordt behandeld. - **Hoofdletters in trefwoorden.** De clausules zelf zijn niet hoofdlettergevoelig, maar tekstwaarden bij `contains` en `=` wel. `Amsterdam` is niet hetzelfde als `amsterdam`. :::faq ### Welke taal gebruikt de QUERY-functie? De Google Visualisatie-querytaal. Die lijkt op SQL met clausules als select, where, group by en order by, maar verwijst naar kolommen met letters. ### Hoe filter ik op een datum in QUERY? Gebruik het date-trefwoord met de notatie jaar-maand-dag, bijvoorbeeld `where B > date '2026-01-01'`. Zet de datum tussen enkele aanhalingstekens binnen de querytekst. ### Kan ik QUERY op data uit een ander bestand gebruiken? Ja, wikkel IMPORTRANGE in QUERY. Verwijs dan naar kolommen met `Col1`, `Col2` in plaats van letters, en geef de andere spreadsheet eenmalig toegang. ### Waarom werkt mijn group by niet? Elke geselecteerde kolom moet in de group by staan of een aggregatie zijn. Een gewone kolom zonder `sum`, `count` of `avg` buiten de group by geeft een fout. ### Moet ik een puntkomma of een komma gebruiken tussen de argumenten? Dat hangt af van je locale. Een Nederlandse spreadsheet gebruikt een puntkomma tussen bereik en querytekst, een Engelse een komma. Binnen de querytekst scheid je kolommen altijd met een komma. ::: De QUERY-functie is een van de krachtigste tools in Sheets voor rapportage. Begin met een eenvoudige `select` en `where`, en voeg `group by` en `order by` toe zodra je samenvattingen nodig hebt.