Retour à la liste des articles Articles
13 minutes de lecture

Requêtes SQL pour Google Sheets

Améliorez vos compétences en matière d'analyse de données en utilisant les requêtes SQL pour Google Sheets ! Ce guide complet vous montrera comment utiliser la fonction QUERY pour combiner la puissance de SQL avec l'accessibilité de Google Sheets !

Vous souhaitez rendre l'analyse de données dans Google Sheets plus rapide et plus puissante ? La fonction QUERY vous permet de filtrer, trier et analyser des données comme vous le feriez en SQL - sans quitter votre feuille de calcul ! Dans cet article, nous allons vous présenter tout ce dont vous avez besoin pour commencer à utiliser les requêtes SQL dans Google Sheets. Plongeons dans l'aventure !

Pourquoi utiliser SQL avec Google Sheets ?

Google Sheets est un service de feuilles de calcul en ligne très populaire qui permet aux utilisateurs de travailler et de collaborer confortablement depuis n'importe quel endroit disposant d'une connexion Internet. Comme d'autres feuilles de calcul, Google Sheets est un outil populaire pour l'analyse de données, car il est facile à utiliser et convivial pour les débutants.

Cependant, la création de rapports complexes avec les seules fonctions de base disponibles dans Google Sheets peut s'avérer difficile. Des tâches telles que le filtrage de données complexes, la création de résumés à plusieurs niveaux ou la combinaison de grands ensembles de données nécessitent souvent beaucoup de travail manuel, ce qui rend le processus long et sujet aux erreurs.

C'est là que SQL entre en jeu ! Google Sheets vous permet d'écrire des requêtes SQL directement dans vos feuilles de calcul, en exploitant les données existantes et en vous donnant des réponses dynamiques comme des fonctions normales. Cela vous semble intéressant ? Voyons comment vous pouvez commencer à utiliser le langage SQL avec Google Sheets.

Utilisation de la fonction QUERY de Google Sheets

La fonction QUERY de Google Sheets possède une syntaxe similaire à celle du langage SQL. Nous aborderons la syntaxe en détail dans un instant, mais voyons d'abord quelques exemples de données que nous utiliserons pour présenter la fonction QUERY:

Requêtes SQL pour Google Sheets

Il s'agit d'un extrait de l'une des bases de données de notre coursSQL pour les débutants , simplifié pour répondre à nos besoins actuels.

Syntaxe générale

La syntaxe générale de la fonction QUERY est la suivante :

=QUERY(data_range, query, [headers])

Les composants sont les suivants :

  • data_range est la plage de lignes où sont stockées les données sources.
  • query est la requête elle-même, dont nous parlerons dans un instant.
  • headers est le nombre de lignes d'en-tête dans la plage de données (le plus souvent 1 ou 0). Ce paramètre est facultatif. Il est automatiquement défini s'il n'est pas fourni, de sorte que ce paramètre est omis la plupart du temps.

Examinons quelques exemples de requêtes qui utilisent le jeu de données ci-dessus. Remarque : ici et dans tous les exemples suivants, data_range désigne la plage de lignes pour la fonction QUERY, c'est-à-dire la table dans laquelle les données sont stockées pour la requête SQL.

Google Sheets vs. Exemples de requêtes SQL

Google Sheets

SQL

Explication

=QUERY(data_range, "select *", 1)

SELECT *
FROM data_range;

Récupère toutes les données de la plage de données.

=QUERY(data_range, "select *")

SELECT *
FROM data_range;

Récupère également toutes les données de la plage, mais laisse Google Sheets décider du nombre de lignes d'en-tête. Nous éviterons désormais l'argument header, car Google Sheets peut le déduire de manière fiable.

=QUERY(data_range, "select A, B")

SELECT
  Department
  First_Name
FROM data_range;

Récupère uniquement les noms de service et les prénoms des employés (stockés dans les colonnes A et B)

Filtrage des données

La syntaxe de la fonction QUERY pour filtrer les données est similaire à la syntaxe SQL :

Google Sheets :

=QUERY(data_range, “select * where <condition>”)

SQL :

SELECT * FROM data_range WHERE <condition>;

Examinons quelques exemples de comparaison entre la fonction QUERY et SQL en termes de filtrage des données :

Google Sheets

SQL

Explication

=QUERY(data_range, "select * where D > 3000")

SELECT *
FROM data_range
WHERE Salary > 3000;

Filtres utilisant des nombres.
Récupère toutes les données des employés dont le salaire (colonne D) est supérieur à 3000.

=QUERY(data_range, "select * where A = 'IT'")

SELECT *
FROM data_range
WHERE Department = ‘IT’;

Filtres utilisant du texte.
Récupère toutes les données des employés qui travaillent dans le service informatique (colonne A).

=QUERY(data_range, "select * where E = ‘Trainee’ and D >= 3000”)

SELECT *
FROM data_range
WHERE Position = ‘Trainee’
  AND Salary >= 3000;

Filtres utilisant plusieurs conditions.
Récupère toutes les données pour les stagiaires (colonne E) qui ont un salaire de 3000 ou plus (colonne D).

=QUERY(data_range, “select * where B starts with ‘J’”)

SELECT *
FROM data_range
WHERE First_Name LIKE ‘J%’;

Filtre par une partie donnée d'une chaîne.
Récupère toutes les données sur les employés dont le nom commence par la lettre J.
Il existe également d'autres fonctions du même type dans Google Sheets ; voir la liste complète ci-dessous.

La condition WHERE peut filtrer des nombres, du texte et bien plus encore :

  • Lesnombres prennent en charge tous les opérateurs suivants : <=, <, >, >=, =, !=, <> . != et <> signifient tous deux "pas égal" et peuvent être utilisés indifféremment.
  • Pour filtrer les valeurs null, vous devez utiliser is null ou is not null. Notez que <column> = null and <column>!= null vous donnera une erreur.
  • Plusieurs fonctions sont disponibles pour filtrer les données textuelles dans la fonction QUERY:
    • starts with filtre sur les premiers caractères de la chaîne. starts with ‘A’ correspondra à tous ces caractères : "Accounting", "Amelia", "A".
    • ends with filtre sur les derniers caractères de la chaîne. ends with ‘nt’ trouvera tous les caractères suivants : "management", "Ant", "nt".
    • contains filtre par la sous-chaîne. contains ‘r’ correspondra à tout ce qui suit : "Harry", "Taylor", "r".
    • matches filtre à l'aide d'expressions régulières (regex), c'est-à-dire un motif qui décrit une chaîne de caractères.
    • like Filtre similaire à LIKE en SQL. Dans Sheets, il prend en charge deux caractères génériques : %“_”. like ‘_o%’ correspondra à tous les caractères suivants : "Poole", "ooze", "to".

Pour réunir plusieurs conditions en une seule, vous pouvez utiliser les mots-clés and et or :

  • <condition1> and <condition2> ne sera vrai que si les deux sont vrais.
  • <condition1> or <condition2> sera vrai si l'une ou l'autre ou les deux sont vraies.

Pour filtrer par l'inverse de la condition, vous pouvez utiliser le mot-clé not : where D > 3000 donnerait le même résultat que where not D <= 3000.

Tri des données

Le tri dans la fonction QUERY est également similaire au tri en SQL. Voici la syntaxe de base :

Google Sheets :

=QUERY(data_range, “select * order by <column> [asc/desc]”)

SQL :

SELECT * FROM data_range ORDER BY <column> [ASC/DESC];

Voyons ce qu'il en est à l'aide de quelques exemples :

Google Sheets

SQL

Explication

=QUERY(data_range, “select B order by B”)

SELECT First_Name
FROM data_range
ORDER BY First_Name;

Trier par une colonne ; l'ordre ASC (croissant) est implicite.

Renvoie tous les prénoms des employés par ordre alphabétique.

=QUERY(data_range, “select A, B order by A, B desc”)

SELECT
  Department,
  First_Name
FROM data_range
ORDER BY
  Department,
  First_Name DESC;

Trie par plusieurs colonnes dans un ordre différent.

Renvoie les services et les noms des employés, triés par service dans l'ordre alphabétique et, au sein de chaque service, par nom dans l'ordre alphabétique inverse.

Si vous ne précisez pas le sens de l'ordre, l'ordre croissantsera utilisé par défaut. Cela signifie que les chaînes de caractères seront affichées dans l'ordre alphabétique et que les nombres seront affichés du plus petit au plus grand. En spécifiant explicitement … order by A asc …, vous obtiendrez le même résultat que si vous ne spécifiez pas l'ordre : … order by A ….

Si vous souhaitez spécifier des sens de classement différents pour différentes colonnes, vous devez spécifier l'ordre pour chaque colonne. Par exemple, ce ...

=QUERY(data_range, “select A, B order by A, B, C desc”)

... triera uniquement la colonne C dans l'ordre décroissant. Voici la bonne façon de trier toutes les colonnes par ordre décroissant :

=QUERY(data_range, “select A, B order by A desc, B desc, C desc”)

Fonctions d'agrégation et de regroupement

La fonction QUERY prend en charge plusieurs fonctions d'agrégation SQL. Au cas où vous ne les connaîtriez pas, les fonctions d'agrégation prennent un groupe de lignes en entrée et renvoient une valeur unique. (Les groupes sont généralement basés sur des valeurs partagées dans une colonne donnée ; nous en parlerons plus en détail dans un instant. Si vous ne spécifiez pas de colonne de regroupement, l'ensemble des données constitue le groupe).

Les fonctions d'agrégation prises en charge dans Google Sheets ( QUERY ) sont les suivantes :

  • count(col) - Renvoie le nombre de valeurs non nulles de la colonne col.
  • max(col) - Renvoie la plus grande valeur de col. Lors de la comparaison de dates, les dates antérieures sont considérées comme "plus petites". Les chaînes de caractères sont comparées par ordre alphabétique et sont sensibles à la casse.
  • min(col) Renvoie la plus petite valeur à partir de col.
  • sum(col) - Renvoie la somme totale des valeurs numériques dans col.
  • avg(col) - Renvoie la moyenne des valeurs numériques dans col.

Voici quelques exemples d'utilisation des fonctions d'agrégation en tant que telles, sans regroupement :

Google Sheets

SQL

Explication

=QUERY(data_range, “select avg(D)”)

SELECT AVG(Salary)
FROM data_range;

L'utilisation de la fonction avg() seule lui permet d'utiliser l'ensemble de la plage de données comme entrée.

Renvoie le salaire moyen de tous les employés de l'entreprise.

=QUERY(data_range, “select count(B)”)

SELECT COUNT(First_Name)
FROM data_range;

Même principe ; sans groupes, count() compte le nombre de lignes dans la colonne B pour l'ensemble des données.

Renvoie le nombre total d'employés en comptant leurs prénoms. Notez que les valeurs nulles sont omises ; pour obtenir le nombre correct de lignes, nous devons nous assurer que nous comptons une colonne non nulle.

Pour regrouper les lignes en fonction de la valeur d'une colonne dans QUERY, nous utilisons le mot-clé group by (comme en SQL). Voici une comparaison entre les deux syntaxes :

Google Sheets :

=QUERY(data_range, “select <data> group by <columns>”)

SQL :

SELECT <data> FROM data_range GROUP BY <columns>;

Le mot-clé group by regroupe les lignes sur la base des valeurs partagées dans la ou les colonnes fournies, en créant une seule ligne pour chaque valeur distincte. Lors de l'utilisation de group by, toutes les colonnes finales doivent soit être une fonction agrégée, soit être utilisées dans la clause group by.

Le résultat est automatiquement trié en fonction des colonnes de regroupement, mais il est possible d'annuler ce tri en utilisant order by.

Voici quelques exemples d'utilisation de group by avec des fonctions agrégées :

Google Sheets

SQL

Explication

=QUERY(data_range, “select A, avg(D) group by A”)

SELECT
  Department,
  AVG(Salary)
FROM data_range
GROUP BY Department
ORDER BY Department;

Renvoie le salaire moyen entre les employés de chaque service.

Notez que l'équivalent SQL inclut la clause ORDER BY, mais pas QUERY. Lorsque vous utilisez group by avec QUERY, le résultat est automatiquement trié.

=QUERY(data_range, “select E, count(B) group by E” order by count(B) desc)

SELECT
  Position,
  COUNT(First_Name)
FROM data_range
GROUP BY Position
ORDER BY COUNT(First_Name) DESC;

Renvoie le nombre d'employés travaillant à chaque poste. Notez que dans QUERY, nous remplaçons l'ordre de tri par défaut pour afficher en premier les postes comptant le plus d'employés.

=QUERY(A1:E14, "select A, E, avg(D) group by A, E")

SELECT
  Department,
  Position,
  AVG(Salary)
FROM data_range
GROUP BY
  Department,
  Position
ORDER BY
  Department,
  Position;

This is an example of grouping by multiple columns.

Renvoie le salaire moyen pour chaque poste dans chaque service. La fonction QUERY utilise le même ordre de colonnes lors du tri des données que l'ordre spécifié lors du regroupement.

Combinaison de données provenant de plusieurs feuilles

La plupart du temps, vous souhaiterez probablement disposer d'une feuille distincte contenant toutes les données sources. Cette section décrit comment utiliser la fonction QUERY sur une feuille autre que celle des données sources. Nous verrons également comment combiner différentes sources de données en une seule QUERY.

Récupération de données à partir d'une autre feuille

Google Sheets vous permet de faire référence à une autre feuille lorsque vous choisissez une source de données. Pour ce faire, ajoutez le nom de la feuille et un point d'exclamation (!) à la plage de votre jeu de données. Par exemple, supposons que nous utilisions actuellement la feuille "analyse" et que nos données sources se trouvent dans la feuille "données" de la même feuille de calcul. (Remarque : vous ne pouvez faire référence à des données provenant d'autres feuilles de calcul que si vous les importez dans votre feuille de calcul actuelle). Nous pouvons spécifier la plage comme suit :

=QUERY(data!A1:E14, “select *”)

Important : si le nom de votre feuille contient des espaces ou des caractères spéciaux, vous devez entourer le nom de la feuille de guillemets simples (‘’), comme ceci :

=QUERY(‘Sheet with a complex name’!A1:E14, “select *”)

Vous savez maintenant comment mieux formater vos feuilles en séparant les données sources des rapports finaux.

Combinaison de plusieurs sources de données

Vous pouvez également combiner des données provenant de plusieurs plages de données dans une fonction QUERY. Les données sont combinées de deux manières :

  • Verticalement: Les données de la plage 1 sont superposées aux données de la plage 2, ce qui augmente le nombre final de lignes.
  • Horizontalement: Les données de la plage 1 seront placées côte à côte avec les données de la plage 2, ce qui augmentera le nombre final de colonnes.

La première option fonctionne comme UNION en SQL. Les données des deux plages doivent être similaires ; lorsqu'on fait référence à une colonne, les données des deux plages sont affichées.

Pour utiliser cette méthode de combinaison des feuilles, remplacez la plage de données dans la requête par la liste des plages, séparées par des points-virgules et placées entre accolades {}, comme ceci :

=QUERY({sheet1!A1:B1;sheet2!A1:B1}, “select *”)

La deuxième option fonctionne comme JOIN en SQL. Chaque ligne de la plage 1 est ajoutée à une ligne de la plage 2, la condition de jonction étant le numéro de ligne relatif. En d'autres termes, la première ligne de la plage 1 est ajoutée à la première ligne de la plage 2.

Cette méthode a une syntaxe similaire à la précédente, mais elle utilise des virgules au lieu de points-virgules pour séparer les plages de données :

=QUERY({sheet1!A1:B1,sheet2!A1:B1}, “select *”)

Pour en savoir plus sur le fonctionnement de UNION et JOIN en SQL, consultez notre cours complet SQL pour les débutants. Il comprend plus de 100 exercices qui vous aideront à apprendre et à pratiquer la syntaxe SQL la plus importante.

Requêtes SQL pour Google Sheets

Chaque exercice de ce cours SQL interactif est conçu pour vous aider à consolider votre compréhension. Au fur et à mesure des exercices, vous gagnerez en confiance pour utiliser ces commandes dans le monde réel.

Que vous soyez débutant ou que vous ayez besoin d'une remise à niveau, notre approche pas à pas vous permet d'apprendre à votre rythme. À la fin du cours, vous aurez acquis une base solide en SQL qui vous ouvrira des possibilités d'analyse de données, de création de rapports et bien plus encore.

L'utilisation de requêtes SQL rend Google Sheets plus puissant

L'utilisation de la fonction QUERY de Google Sheets est un excellent moyen de combiner la puissance du langage SQL avec la convivialité de Google Sheets, sans avoir à apprendre une syntaxe supplémentaire. Grâce à cette fonction, vous pouvez créer des rapports facilement partageables que vos collègues peuvent utiliser sans avoir à quitter Google Sheets ou à comprendre des structures SQL avancées.

Dans cet article, nous avons examiné la syntaxe de la fonction QUERY ainsi que ses similitudes et ses différences par rapport au langage SQL classique. Comme vous pouvez le constater, vos compétences SQL existantes peuvent être facilement transférées à l'écriture de requêtes dans Google Sheets.

Vous souhaitez découvrir d'autres intégrations SQL avec les outils Google ? Découvrez comment utiliser SQL avec Google Analytics.