Retour à la liste des articles Articles
11 minutes de lecture

SQL dans Google Sheets ? Oui, c'est possible !

Saviez-vous que vous pouvez écrire des requêtes de type SQL dans les feuilles de calcul Google ? Cette fonctionnalité est incroyablement puissante et polyvalente, et peut remplacer la plupart des fonctionnalités offertes par les tableaux croisés dynamiques d'Excel.

Lisez notre article pour découvrir comment vous pouvez facilement utiliser la fonction QUERY pour travailler efficacement avec vos données Google Sheets.

Les bases de données relationnelles partagent de nombreuses caractéristiques avec les feuilles de calcul. Lorsque nous expliquons ce que sont les bases de données, nous disons souvent qu'elles sont un peu comme les tableurs, sauf qu'elles nous permettent de mieux contrôler de plus grandes quantités de données.

Pour communiquer avec les bases de données, nous utilisons généralement SQL, qui est un moyen efficace d'extraire des données d'une base de données. (Si vous n'avez jamais entendu parler de SQL, commencez par lire notre court article The Complete Beginner's Guide to Les Fondamentaux de SQL.)

SQL est un langage d'interrogation universel. Il existe depuis les années 1970 et reste extrêmement populaire. Connaître le SQL augmente vos chances de faire une carrière stable dans l'informatique, car ces connaissances sont recherchées par de nombreux employeurs. Si vous souhaitez découvrir les avantages de l'utilisation de SQL, consultez 5 grands avantages de l'apprentissage de SQL.

Revenons maintenant aux feuilles de calcul. Les feuilles de calcul sont importantes car les données ne sont pas toujours stockées dans une base de données. De nombreuses entreprises utilisent des fichiers CSV ou des feuilles de calcul pour gérer leurs informations. Ceux-ci peuvent être ouverts dans des applications telles que Google Sheets ou Microsoft Excel, mais ces fichiers ne fonctionnent pas avec les bases de données en tant que telles.

Cela signifie-t-il que vous ne pouvez pas utiliser SQL lorsque vous travaillez avec des données dans des feuilles de calcul ? Pas du tout ! Google Sheets propose une option QUERY qui vous permet d'écrire des instructions de type SQL et de récupérer des données d'une manière similaire à SQL. Ainsi, vous pouvez utiliser la puissance de SQL même si vous ne disposez pas d'une base de données pour travailler !

Il va sans dire que Google Sheets est disponible gratuitement. Le programme peut ouvrir un large éventail de formats de fichiers, notamment les fichiers CSV et Excel.

Le langage SQL étant un langage d'interrogation de données bien conçu et normalisé, le fait de penser en termes de SQL lorsque vous travaillez dans Google Sheets peut faciliter vos analyses. Pour en savoir plus, consultez l'article intitulé " How to Start Thinking in SQL ", rédigé par Jeffrey Edison, conseiller technique de NoSide.

Dans cet article, nous allons vous montrer quelques exemples de base de travail avec SQL dans Google Sheets. Une certaine connaissance de SQL est recommandée, mais elle n'est pas nécessaire pour comprendre les concepts que nous allons présenter. Vous devriez être en mesure de suivre les exemples même si vous n'avez jamais vu d'instruction SQL auparavant. Toutefois, si vous souhaitez apprendre le langage SQL, jetez un coup d'œil au cours LearnSQL.fr's Les Fondamentaux de SQL, qui ne suppose aucune expérience préalable et vous permettra de devenir un utilisateur SQL intermédiaire.

Échantillonnage des données Google Sheets

Dans cet article, nous allons travailler avec une simple feuille de calcul Google Sheets qui contient des informations de base sur une sélection d'hôtels en Indonésie. Nous avons utilisé des hôtels imaginaires, alors n'essayez pas de les trouver.

Échantillonnage des données Google Sheets

Vous pouvez consulter la feuille de calcul et toutes les requêtes que nous présentons dans cet article dans notre feuille de calcul Google "Hotel Query". Il existe une feuille distincte pour chaque requête présentée dans cet article.

Le tableau Hotels contient les colonnes suivantes :

  • Id - L'identifiant unique de cet hôtel.
  • Name - Le nom de l'hôtel.
  • Stars - Le nombre d'étoiles attribuées à l'hôtel : 3, 4 ou 5.
  • Rating - La note moyenne attribuée à l'hôtel par ses clients, sur une échelle de 0 à 10.
  • TwinRoomPrice - Le prix de base d'une chambre double pour une nuit.
  • City - La ville où se trouve l'hôtel : Bandung, Denpasar, ou Surabaya.

Même si les hôtels sont imaginaires, les villes sont réelles. Google Bandung, Denpasar et Surabaya sont de très bonnes destinations indonésiennes !

Très bien. Maintenant que nous connaissons les données, apprenons à utiliser SQL dans Sheets.

Comprendre la fonction de requête

Pour écrire des instructions de type SQL dans Google Sheets, nous n'avons besoin que d'une seule fonction appelée QUERY. Le format de la fonction n'est pas particulièrement difficile :

=QUERY(data, query, [headers])

Comme vous pouvez le constater, la fonction QUERY prend trois paramètres, dont deux seulement sont obligatoires. Examinons ces paramètres :

  • data - L'intervalle de cellules contenant les données (dans ce cas, l'intervalle est le tableau entier). Hotels tableau).
  • query - La requête de type SQL à exécuter.
  • headers - Le nombre de lignes qui contiennent des informations d'en-tête. Celles-ci se trouvent généralement en haut des données, c'est-à-dire les noms des colonnes. Cet argument est facultatif. Si vous ne le fournissez pas, Google Sheets essaiera de le découvrir. L'application est assez douée pour cela, de sorte que ce paramètre n'est généralement pas nécessaire. Nous l'omettons dans cet article.

Ne vous inquiétez pas si ces paramètres vous semblent un peu vagues. Nous vous fournirons quelques exemples faciles à suivre dans les paragraphes suivants.

Première requête dans Google Sheets

Commençons par l'exemple le plus simple possible. Nous allons simplement sélectionner toutes les données de notre tableau Hotels tableau.

Nous allons d'abord choisir une cellule libre à droite du tableau dans Google Sheets. Hotels dans Google Sheets et commencer à écrire notre requête de la manière suivante. (N'appuyez pas encore sur Entrée).

=QUERY(A1:F23,

Le premier paramètre, data, est la plage de cellules. Dans ce cas, nous avons fourni A1:F23, qui correspond à la plage de la table Hotels comme le montre l'image ci-dessous.

Tableau des hôtels

Maintenant, après la virgule, nous devons fournir notre requête de type SQL entre guillemets. Le nom officiel du langage de requête utilisé dans Google Sheets est Google Visualization API Query Language. Pour sélectionner toutes les données, nous avons besoin du code suivant :

=QUERY(A1:F23,"SELECT *")

Notez que vous devrez peut-être remplacer la virgule qui sépare les paramètres par un point-virgule ou un autre caractère, en fonction de vos paramètres Google Sheets.

Dans Google Sheets, SELECT * signifie "tout sélectionner". Notez à quel point cette instruction est similaire à son équivalent SQL, SELECT * FROM Hotels. Dans Google Sheets, nous omettons la clause FROM car la plage de données est spécifiée dans le premier argument.

Si vous appuyez maintenant sur Entrée, Google Sheets transformera la requête en un ensemble de résultats, comme le montre l'image ci-dessous :

SELECT * FROM Hôtels

Le tableau que vous pouvez voir est essentiellement identique au tableau d'origine. C'est le comportement attendu. Notre requête était SELECT *, ce qui signifie "afficher tout ce qui se trouve dans les données d'origine".

Super ! Nous venons d'écrire notre première requête dans Google Sheets !

Utilisation des colonnes et des conditions

Voyons maintenant quelques exemples plus avancés. Supposons que nous ne voulions afficher que trois colonnes : Nom, Classement et Prix de la chambre double. De plus, nous voulons uniquement afficher les hôtels trois étoiles.

Dans ce cas, nous devrons nous référer à des colonnes individuelles. La requête ressemblera à ceci :

=QUERY(A1:F23, "SELECT B, D, E WHERE C=3")

Comme vous pouvez le constater, au lieu d'utiliser les noms de colonnes de notre tableau (tels que Name, Stars ou Rating), nous utilisons les lettres de colonnes fournies par Google Sheets. La colonne Nom est située dans la colonne B de la feuille de calcul, nous avons donc utilisé SELECT B pour l'afficher dans le tableau résultant. De même, nous avons utilisé D pour sélectionner la colonne Rating et E pour sélectionner la colonne TwinRoomPrice. Les colonnes sont également séparées par des virgules, mais il n'y a pas de virgule après la dernière colonne que nous voulons sélectionner.

Après avoir sélectionné les colonnes, nous ajoutons WHERE C=3. C fait référence à la colonne Stars, de sorte que l'instruction signifie en gros :ne sélectionnez que les hôtels trois étoiles (c'est-à-dire ceux dont la colonne C est égale à 3).

La capture d'écran ci-dessous montre comment la requête fait référence aux différentes colonnes :

sélectionnez uniquement les hôtels trois étoiles

Lorsque nous appuyons sur la touche Entrée, Google Sheets produit un tableau soigné qui contient trois colonnes avec toutes les informations relatives aux hôtels trois étoiles : Nom, Classement et TwinRoomPrice.

sélectionnez uniquement les hôtels trois étoiles

Notez que la requête SQL équivalente serait très similaire :

SELECT Name, Rating, TwinRoomPrice
FROM Hotels
WHERE Stars=3;

Ajout de conditions supplémentaires et classement des lignes

Dans notre prochain exemple, nous voulons trouver tous les hôtels de Bandung dont la note est supérieure à 7.0. Nous voulons également que les hôtels trouvés soient triés du moins cher au plus cher.

Pour satisfaire ces exigences, nous devrons ajouter deux nouvelles parties. Nous devrons joindre plusieurs conditions avec le mot-clé AND, et nous devrons trier les lignes avec une nouvelle clause nommée ORDER BY. Voici la requête :

=QUERY(A1:F23, "SELECT * WHERE D > 7.0 AND F='Bandung' ORDER BY E")

Regardez la clause WHERE de la requête ci-dessus. La colonne D contient les évaluations des hôtels. Dans ce cas, nous voulons que la note soit supérieure à 7.0. Nous voulons également introduire une autre condition : les hôtels doivent être situés à Bandung. Pour introduire plus d'une condition, nous utilisons le mot-clé AND.

La colonne F contient les villes des hôtels, nous avons donc écrit F='Bandung' pour obtenir les hôtels de Bandung. Notez que les valeurs de texte doivent être entourées de guillemets simples (contrairement aux nombres). Si nous oublions les guillemets, nous obtiendrons une erreur.

Enfin, nous avons ajouté le morceau de code suivant : ORDER BY E. La clause ORDER BY est utilisée pour trier les lignes résultantes. Dans ce cas, nous voulons trier les lignes par TwinRoomPrice, qui se trouve dans la colonne E. Par défaut, les lignes sont triées par ordre croissant.

Lorsque nous appuyons sur le bouton Enter, nous pouvons voir le tableau résultant. En effet, nous ne pouvons voir que les hôtels de Bandung dont l'évaluation est supérieure à 7.0. Remarquez que toutes les lignes sont triées par prix.

hôtels de Bandung avec une note supérieure à 7.0

Compter les lignes groupées

Enfin, nous allons passer à deux exemples que vous pouvez utiliser pour produire des résultats similaires aux tableaux croisés dynamiques d'Excel.

Tout d'abord, nous voulons compter le nombre d'hôtels dans chaque ville. Pour ce faire, nous allons utiliser la requête suivante :

=QUERY(A1:F23,"SELECT F, COUNT(A) GROUP BY F ")

La requête contient deux nouveaux éléments : COUNT(A) et GROUP BY F. Commençons par ce dernier.

GROUP BY F signifie que nous voulons diviser toutes les lignes en groupes sur la base des valeurs de la colonne F (qui est la ville). Nous effectuons le regroupement (également appelé "agrégation") pour pouvoir afficher chaque ville (SELECT F) ainsi que le nombre d'hôtels dans cette ville (COUNT(A)).

COUNT(A) compte le nombre de lignes dans le groupe donné. Si aucune clause GROUP BY n'est fournie, elle comptera toutes les lignes. Nous avons placé la colonne A(Id) entre parenthèses pour que tous les hôtels uniques soient comptés. Nous avons choisi Id par convention ; vous pourriez utiliser une autre colonne, comme B (le nom de l'hôtel), mais les colonnes ID sont généralement préférées car elles contiennent toujours des valeurs uniques.

Nous abordons les fonctions d'agrégation (telles que COUNT()) et la clause GROUP BY dans notre coursLes Fondamentaux de SQL . Consultez-le si vous souhaitez comprendre le fonctionnement de ces fonctions SQL.

Lorsque nous appuyons sur Entrée, nous pouvons voir le tableau résultant avec le nombre d'hôtels dans chaque ville :

nombre d'hôtels dans chaque ville

La requête SQL équivalente ressemblerait à ceci :

SELECT City, COUNT(Id)
FROM Hotels
GROUP BY City;

Trouver des moyennes

Dans le dernier exemple, nous allons calculer la note moyenne et le prix moyen des hôtels de chaque catégorie (trois étoiles, quatre étoiles et cinq étoiles). Nous aurons besoin de la requête suivante :

=QUERY(A1:F23, "SELECT C, AVG(D), AVG(E) GROUP BY C")

Nous avons utilisé GROUP BY C pour regrouper tous les hôtels par la colonne Étoiles. Nous avons également introduit AVG(D) et AVG(E), qui sont utilisés pour calculer les valeurs moyennes des colonnes D(Rating) et E(TwinRoomPrice), respectivement. Lorsque nous appuyons sur Entrée, nous devrions voir ce tableau de résultats :

Trouver des moyennes

L'instruction SQL équivalente ressemblerait à ceci :

SELECT Stars, AVG(Rating), AVG(TwinRoomPrice)
FROM Hotels
GROUP BY Stars;

Des requêtes SQL(ish) dans Google Sheets ? Absolument !

Dans cet article, j'ai expliqué comment utiliser un langage de requête similaire à SQL dans Google Sheets. Vous devriez maintenant avoir une solide compréhension de la fonction QUERY dans Sheets. Vous pouvez également constater à quel point le langage de requête de Google est similaire au langage SQL standard.

Si vous avez apprécié cet apprentissage et que vous êtes curieux de connaître le langage SQL, consultez le cours LearnSQL.fr's Les Fondamentaux de SQL. Il existe une version d'essai gratuite pour vous aider à démarrer !

Le langage de requête de Google est certainement plus complexe que ce que nous avons pu montrer dans cet article d'introduction. Si vous souhaitez utiliser ses autres fonctionnalités, consultez la documentation officielle du langage de requête de l'API de visualisation de Google.