Google Sheets QUERY : compléments
Afin de pouvoir traiter des valeurs booléennes (VRAI, FAUX) et nulles (cellules vides), cette dernière page utilisera une base de données quelque peu différente pour ses exemples :
Valeurs booléennes
Une base de données peut contenir également des colonnes de valeurs booléennes VRAI ou FAUX (TRUE ou FALSE en anglais). Ce type de valeurs est généralement retourné par une fonction, une formule ou une case à cocher.
Dans cette nouvelle base de données, les colonnes F et G contiennent des valeurs booléennes.
Pour récupérer par exemple toutes les données des utilisateurs inscrits au projet 1 (F = VRAI) et au projet 2 (G = coché/VRAI), entrez :
=QUERY('BD 2'!A1:H15;"SELECT * WHERE F = TRUE AND G = TRUE")
Ou pour connaître par exemple le nombre d'inscrits pour chaque projet en fonction de l'autre, entrez :
=QUERY('BD 2'!A1:H15;"SELECT F, COUNT(A) GROUP BY F PIVOT G")

Cellules vides
Une cellule vide peut être considérée comme une valeur texte vide ('') ou nulle (NULL).
Pour récupérer toutes les données des utilisateurs n'ayant pas renseigné d'adresse email (H), entrez :
=QUERY('BD 2'!A1:H15;"SELECT * WHERE H = ''")

Le test = ''
peut être remplacé par IS NULL
pour un résultat identique :
=QUERY('BD 2'!A1:H15;"SELECT * WHERE H IS NULL")

Bien qu'avec des cellules vides, l'une ou l'autre des solutions peut être utilisée, notez qu'une valeur texte vide n'est pas égale à la valeur NULL. Dans certains cas particuliers, seule l'une des solutions sera utilisable.
Un exemple (juste pour illustrer cette différence) d'une requête testant la division par 0 pour retourner les données dont le rang (D) ou le nombre de messages (E) est égal à 0 :
=QUERY('BD 2'!A1:H15;"SELECT * WHERE A / D / E IS NULL")
Plage renvoyée par une fonction
Dans tous les exemples de ce cours, la plage de données (contenant la base de données) était une plage de cellules.
Dans certains cas, cette plage de données n'est pas une plage de cellules mais une plage renvoyée par une autre fonction. Dans ce cas, il n'est pas possible d'utiliser les lettres des colonnes dans la requête.
Si la plage spécifiée dans la fonction QUERY n'est pas une plage de cellules, entrez Col
suivi du numéro de colonne (au lieu d'utiliser les lettres des colonnes) :
=QUERY(UNIQUE('BD 2'!C1:H15);"SELECT Col1, Col3 WHERE Col4 = TRUE")

Ordre
Pour terminer, retenez l'ordre à respecter pour construire une requête :