Cours › Décisions fondées sur les données : de la question à la réponse

Regrouper pour obtenir un tableau prêt à graphiquer

Leçon 6 sur 8 · 13 min

Une ligne par barre

Un graphique est une table déguisée. Un diagramme en barres du chiffre d'affaires par source a besoin d'exactement une ligne par source et une colonne par valeur. Passer de milliers de lignes de commandes à une poignée de lignes récapitulatives est le travail de GROUP BY.

SQL
SELECT source,
       COUNT(*) AS orders,
       ROUND(SUM(net_amount), 2) AS revenue
FROM orders
WHERE status = 'delivered'
  AND order_date >= '2026-01-01'
  AND order_date < '2026-04-01'
GROUP BY source
ORDER BY revenue DESC;

GROUP BY source regroupe toutes les lignes ayant la même source en une seule ligne, et les agrégats comme COUNT et SUM fonctionnent ensuite à l'intérieur de chaque groupe. Chaque colonne dans SELECT doit soit apparaître dans GROUP BY, soit se trouver dans un agrégat. Sinon, SQL ne peut pas savoir laquelle des nombreuses valeurs d'un groupe afficher.

Pour le premier trimestre 2026, le résultat place direct en premier avec CHF 14'711.70, puis la recherche payante avec CHF 5'798.60 et l'organique avec CHF 5'716.96. Le social vient en dernier avec CHF 2'662.37. Lisez attentivement : source est la source de la visite qui a mené à la commande. Sur les 273 commandes passées depuis des visites directes ce trimestre-là, seulement 22 étaient une première commande. Ce tableau montre où les commandes arrivent, pas quel canal a gagné la cliente.

Grouper par une valeur calculée

Pour grouper par mois, calculez le mois à partir de la date. strftime(order_date, '%Y-%m') formate une date en texte tel que 2025-07. Comme le texte commence par l'année, le trier trie aussi les mois dans l'ordre chronologique.

  • Nommez la colonne calculée avec AS, par exemple AS month. Dans DuckDB, vous pouvez ensuite écrire GROUP BY month ; dans certaines autres bases de données, vous répétez le calcul.
  • Filtrez avant de grouper. WHERE retire les lignes avant qu'elles ne soient groupées, de sorte que les commandes annulées n'atteignent jamais les sommes.
  • Triez les lignes de la façon dont le graphique se lit : les mois par le temps, les catégories par taille.
  • Gardez le nombre de lignes assez petit pour être lisible. Huit régions ou douze mois font un bon graphique ; 96 produits ont généralement besoin d'un top 10 et d'une ligne pour le reste.

À quoi ressemble l'année

Groupé par mois, le chiffre d'affaires livré en 2025 va de CHF 7'963.79 en juillet à CHF 18'373.89 en décembre. Décembre n'a pas eu le plus de commandes ; c'est novembre, avec 273. Les paniers de décembre étaient les plus gros, à CHF 70.67 en moyenne. Le deuxième trimestre 2025 a apporté CHF 37'265.67.

Les commandes et le chiffre d'affaires ne classent pas toujours les groupes de la même façon. En 2025, Genève a eu 272 commandes livrées et Bâle 264, pourtant Bâle a apporté plus de chiffre d'affaires, CHF 16'079.85 contre CHF 15'744.15, car ses commandes étaient plus grosses en moyenne. Quand deux valeurs pourraient raconter des histoires différentes, les deux colonnes ont leur place dans le tableau.

Cette structure importe à Lena de deux façons. Le deuxième trimestre n'est pas une haute saison, un chiffre d'affaires stable d'avril à juin ne prouverait donc pas qu'un nouveau budget a échoué. Et les résultats par canal de décembre ne devraient pas être comparés à ceux de juillet sans le préciser dans la note.

💡 Un tableau prêt à graphiquer n'a pas de cellules vides, une unité claire par colonne, comme commandes ou CHF, et exactement les lignes que le graphique montrera. Si vous devez supprimer des lignes dans un tableur avant de tracer le graphique, changez la requête à la place.
Vérification des connaissances
Quelle requête renvoie un tableau prêt à graphiquer correct des commandes par région ?

Connectez-vous pour répondre et suivre votre progression.

Se connecter
</>
Babala Software Netzwerk — Apps, Websites & KI-Lösungen aus Füllinsdorf BL
© 2026 Babala Özdemir · UID CHE-322.105.560 babala.ch info@babala.ch 076 792 63 50 Facebook Instagram