Méthode de collecte de données mensuelles et annuelles avec la fonction COUNT en SQL

La fonction COUNT en SQL est un outil fondamental pour collecter efficacement le nombre d’enregistrements dans une base de données. Cet article explique comment regrouper les données mensuellement et annuellement avec des exemples concrets. La collecte de données est une compétence essentielle pour l’intelligence d’affaires et la création de rapports. Nous expliquerons clairement les bases et les applications de SQL à l’aide d’exemples concrets.

Sommaire

Utilisation de base de la fonction COUNT

La fonction COUNT est une fonction d’agrégation en SQL qui renvoie le nombre de valeurs non NULL dans une colonne spécifiée. Elle peut être utilisée pour obtenir le nombre total d’enregistrements dans une table ou le nombre d’enregistrements répondant à une condition spécifique. Voici la syntaxe de base et un exemple simple.

Syntaxe de base

SELECT COUNT(column_name)  
FROM table_name  
WHERE condition;

Exemple d’utilisation

Par exemple, pour obtenir le nombre total de clients à partir de la table des clients (customers), vous pouvez écrire la requête suivante :

SELECT COUNT(*)  
FROM customers;

Cette requête renverra le nombre total d’enregistrements dans la table customers. Il est également possible d’obtenir le nombre d’enregistrements en fonction de certaines conditions.

Exemple avec condition spécifique

Par exemple, pour obtenir le nombre de clients actifs, la requête serait la suivante :

SELECT COUNT(*)  
FROM customers  
WHERE status = 'active';

Cette requête renverra le nombre de clients dont le statut est ‘active’. Cela permet une collecte de données facile basée sur des critères spécifiques.

Méthode de collecte des données mensuelles

La collecte de données mensuelles est essentielle pour comprendre les tendances au cours d’une période donnée. Nous allons ici expliquer comment regrouper les données par mois en utilisant la fonction COUNT en SQL et la clause GROUP BY.

Syntaxe de base

SELECT EXTRACT(YEAR FROM date_column) AS year, EXTRACT(MONTH FROM date_column) AS month, COUNT(*)  
FROM table_name  
GROUP BY EXTRACT(YEAR FROM date_column), EXTRACT(MONTH FROM date_column)  
ORDER BY year, month;

Exemple d’utilisation

Par exemple, pour obtenir le nombre de commandes mensuelles à partir d’une table des commandes (orders), vous pouvez écrire la requête suivante :

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Cette requête regroupe les commandes de la table orders par année et par mois en se basant sur la colonne order_date, et affiche les résultats triés par année et mois.

Exemple avancé

De plus, il est possible de regrouper les données mensuelles en ajoutant une condition, par exemple pour un client spécifique :

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
WHERE customer_id = 123  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Cette requête regroupe les commandes d’un client spécifique (customer_id = 123) par mois, ce qui permet une analyse plus détaillée.

Méthode de collecte des données annuelles

La collecte des données annuelles est utile pour identifier les tendances à long terme. Nous allons maintenant expliquer comment regrouper les données par année en utilisant la fonction COUNT en SQL et la clause GROUP BY.

Syntaxe de base

SELECT EXTRACT(YEAR FROM date_column) AS year, COUNT(*)  
FROM table_name  
GROUP BY EXTRACT(YEAR FROM date_column)  
ORDER BY year;

Exemple d’utilisation

Par exemple, pour obtenir le nombre de commandes annuelles à partir de la table des commandes (orders), la requête serait :

SELECT EXTRACT(YEAR FROM order_date) AS year, COUNT(*)  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date)  
ORDER BY year;

Cette requête regroupe les commandes de la table orders par année en se basant sur la colonne order_date, et affiche les résultats triés par année.

Exemple avancé

En ajoutant des conditions spécifiques, vous pouvez effectuer une collecte des données annuelles plus détaillée. Par exemple, pour regrouper les commandes annuelles pour une catégorie de produits spécifique :

SELECT EXTRACT(YEAR FROM order_date) AS year, COUNT(*)  
FROM orders  
WHERE product_category = 'Electronics'  
GROUP BY EXTRACT(YEAR FROM order_date)  
ORDER BY year;

Cette requête regroupe les commandes pour la catégorie de produits ‘Electronics’ par année, permettant une analyse plus spécifique des tendances.

Collecte de données plus détaillée

Il peut être utile de combiner l’année et le mois pour une collecte de données plus détaillée. La requête suivante en est un exemple :

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Cette requête regroupe les données à la fois par année et par mois, ce qui permet une analyse plus granulaire des commandes.

Combinaison de la fonction COUNT et de la clause GROUP BY

La combinaison de la fonction COUNT et de la clause GROUP BY est un outil puissant pour regrouper et analyser les données en SQL. Nous allons ici expliquer comment utiliser GROUP BY pour regrouper les données par catégories spécifiques.

Syntaxe de base

SELECT column_name, COUNT(*)  
FROM table_name  
GROUP BY column_name  
ORDER BY COUNT(*) DESC;

Exemple d’utilisation

Par exemple, pour regrouper les clients par ville et obtenir le nombre de clients par ville dans la table des clients (customers), vous pouvez écrire la requête suivante :

SELECT city, COUNT(*)  
FROM customers  
GROUP BY city  
ORDER BY COUNT(*) DESC;

Cette requête regroupe les clients de la table customers par ville et les trie par ordre décroissant du nombre de clients.

Utilisation avec plusieurs colonnes

Il est également possible d’utiliser plusieurs colonnes pour regrouper les données. Par exemple, pour regrouper les clients par ville et par année d’inscription, la requête serait :

SELECT city, EXTRACT(YEAR FROM signup_date) AS year, COUNT(*)  
FROM customers  
GROUP BY city, EXTRACT(YEAR FROM signup_date)  
ORDER BY city, year;

Cette requête regroupe les clients par ville et par année d’inscription, et affiche le nombre de clients par ville et par année.

Utilisation de la clause HAVING

En utilisant la clause HAVING avec GROUP BY, vous pouvez filtrer les groupes selon certaines conditions. Par exemple, pour n’afficher que les villes ayant au moins 50 clients, la requête serait :

SELECT city, COUNT(*)  
FROM customers  
GROUP BY city  
HAVING COUNT(*) >= 50  
ORDER BY COUNT(*) DESC;

Cette requête regroupe les clients par ville et n’affiche que les villes ayant au moins 50 clients. La clause HAVING permet d’ajouter des conditions sur les résultats des groupes après leur regroupement.

La combinaison de la fonction COUNT et de la clause GROUP BY permet d’analyser efficacement les informations contenues dans une base de données.

Exemples de requêtes avec des données réelles

Pour mieux comprendre l’utilisation pratique de la fonction COUNT et de la clause GROUP BY, nous présentons ci-dessous quelques exemples de requêtes avec des données fictives.

Structure de la table des commandes

Tout d’abord, voici la structure d’une table des commandes (orders) dans une base de données fictive. Cette table contient les colonnes suivantes :

  • order_id (ID de commande)
  • customer_id (ID de client)
  • order_date (Date de commande)
  • product_category (Catégorie de produit)
  • amount (Montant de la commande)

Exemple de données

CREATE TABLE orders (  
    order_id INT,  
    customer_id INT,  
    order_date DATE,  
    product_category VARCHAR(50),  
    amount DECIMAL(10, 2)  
);  

INSERT INTO orders (order_id, customer_id, order_date, product_category, amount) VALUES  
(1, 101, '2023-01-15', 'Electronics', 299.99),  
(2, 102, '2023-02-20', 'Books', 19.99),  
(3, 103, '2023-01-22', 'Electronics', 149.99),  
(4, 104, '2023-03-15', 'Clothing', 79.99),  
(5, 105, '2023-03-30', 'Books', 9.99);

Requête pour regrouper les commandes mensuelles

Voici une requête qui regroupe les commandes mensuelles dans la table des commandes (orders).

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Résultat de la requête

yearmonthcount
202312
202321
202332

Requête pour regrouper le montant des commandes annuelles

Ensuite, voici une requête qui regroupe le montant total des commandes par année.

SELECT EXTRACT(YEAR FROM order_date) AS year, SUM(amount) AS total_amount  
FROM orders  
GROUP BY EXTRACT(YEAR FROM order_date)  
ORDER BY year;

Résultat de la requête

yeartotal_amount
2023559.95

Requête pour regrouper les commandes par catégorie de produit

Pour regrouper les commandes par catégorie de produit, voici la requête :

SELECT product_category, COUNT(*)  
FROM orders  
GROUP BY product_category  
ORDER BY COUNT(*) DESC;

Résultat de la requête

product_categorycount
Electronics2
Books2
Clothing1

Ces exemples de requêtes vous montrent comment effectuer efficacement des collectes de données à l’aide de SQL.

Exemple avancé : Agrégation avec plusieurs conditions

En combinant plusieurs conditions, vous pouvez effectuer des analyses plus détaillées. Voici un exemple avancé de collecte de données avec plusieurs critères.

Requête pour regrouper les commandes par catégorie de produit et par mois

Voici une requête qui regroupe les commandes par catégorie de produit et par mois.

SELECT product_category, EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
GROUP BY product_category, EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY product_category, year, month;

Résultat de la requête

product_categoryyearmonthcount
Books202321
Books202331
Clothing202331
Electronics202312

Requête pour regrouper les montants annuels par client

Voici une requête qui regroupe les montants annuels des commandes par client.

SELECT customer_id, EXTRACT(YEAR FROM order_date) AS year, SUM(amount) AS total_amount  
FROM orders  
GROUP BY customer_id, EXTRACT(YEAR FROM order_date)  
ORDER BY customer_id, year;

Résultat de la requête

customer_idyeartotal_amount
1012023299.99
102202319.99
1032023149.99
104202379.99
10520239.99

Requête pour filtrer les commandes avec un montant minimum

Par exemple, pour regrouper uniquement les commandes de plus de 100 dollars par mois, voici la requête :

SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
WHERE amount >= 100  
GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)  
ORDER BY year, month;

Résultat de la requête

yearmonthcount
202312

Combinaison de différentes méthodes de regroupement

Enfin, voici un exemple de combinaison de plusieurs méthodes de regroupement. La requête suivante regroupe les clients par ville et calcule à la fois le nombre de clients et le montant moyen des commandes dans chaque ville.

SELECT city, COUNT(customer_id) AS customer_count, AVG(amount) AS average_order_amount  
FROM customers  
JOIN orders ON customers.customer_id = orders.customer_id  
GROUP BY city  
ORDER BY customer_count DESC;

Résultat de la requête

citycustomer_countaverage_order_amount
New York5159.95
Los Angeles3129.99
Chicago299.99

Ces exemples avancés montrent comment combiner plusieurs méthodes de regroupement pour obtenir une analyse plus approfondie.

Exercices pratiques

Pour renforcer votre compréhension, essayez de résoudre les exercices suivants. Ces exercices vous aideront à améliorer vos compétences pratiques en SQL en utilisant la fonction COUNT et la clause GROUP BY.

Exercice 1 : Regrouper le nombre de clients par année

La table des clients (customers) contient un ID de client (customer_id) et une date d’inscription (signup_date). Écrivez une requête pour regrouper le nombre de nouveaux clients par année.

-- Exemple de réponse  
SELECT EXTRACT(YEAR FROM signup_date) AS year, COUNT(*)  
FROM customers  
GROUP BY EXTRACT(YEAR FROM signup_date)  
ORDER BY year;

Exercice 2 : Regrouper le montant total des commandes par catégorie de produit

La table des commandes (orders) contient une catégorie de produit (product_category) et un montant de commande (amount). Écrivez une requête pour regrouper le montant total des commandes par catégorie de produit.

-- Exemple de réponse  
SELECT product_category, SUM(amount) AS total_amount  
FROM orders  
GROUP BY product_category  
ORDER BY total_amount DESC;

Exercice 3 : Regrouper les commandes mensuelles pour une année spécifique

À partir de la table des commandes (orders), écrivez une requête pour regrouper le nombre de commandes mensuelles pour l’année 2023.

-- Exemple de réponse  
SELECT EXTRACT(MONTH FROM order_date) AS month, COUNT(*)  
FROM orders  
WHERE EXTRACT(YEAR FROM order_date) = 2023  
GROUP BY EXTRACT(MONTH FROM order_date)  
ORDER BY month;

Exercice 4 : Regrouper le montant total des commandes annuelles par client

En utilisant les tables customers et orders, écrivez une requête pour regrouper le montant total des commandes annuelles par client.

-- Exemple de réponse  
SELECT customers.customer_id, EXTRACT(YEAR FROM orders.order_date) AS year, SUM(orders.amount) AS total_amount  
FROM customers  
JOIN orders ON customers.customer_id = orders.customer_id  
GROUP BY customers.customer_id, EXTRACT(YEAR FROM orders.order_date)  
ORDER BY customers.customer_id, year;

Exercice 5 : Filtrer les catégories de produits avec plus de 50 commandes

À partir de la table des commandes (orders), écrivez une requête pour n’afficher que les catégories de produits ayant au moins 50 commandes.

-- Exemple de réponse  
SELECT product_category, COUNT(*) AS order_count  
FROM orders  
GROUP BY product_category  
HAVING COUNT(*) >= 50  
ORDER BY order_count DESC;

Ces exercices pratiques vous permettront de mieux comprendre comment utiliser SQL pour collecter et analyser des données à l’aide de la fonction COUNT et de la clause GROUP BY. Essayez de résoudre chaque problème et vérifiez si vos requêtes fonctionnent correctement.

Conclusion

Dans cet article, nous avons détaillé la méthode de collecte de données mensuelles et annuelles à l’aide de la fonction COUNT en SQL. En combinant la fonction COUNT avec la clause GROUP BY, vous pouvez regrouper et analyser efficacement les informations contenues dans une base de données. À travers des exemples concrets et des exercices pratiques, vous avez appris à utiliser ces outils pour améliorer vos compétences en intelligence d’affaires et en création de rapports. Utilisez ces connaissances pour analyser des données et produire des rapports efficaces pour vos projets professionnels.

Sommaire