UAA 7    Base de données

Fonctions SQL avancées

Les fonctions d’agrégation permettent de calculer des valeurs à partir d’un ensemble de lignes. Elles sont souvent utilisées avec GROUP BY et HAVING.

1. COUNT()

Compte le nombre de lignes.


SELECT COUNT(*) AS NombreClients
FROM Clients;
  

2. SUM()

Calcule la somme d’une colonne numérique.


SELECT SUM(Montant) AS TotalVentes
FROM Commandes;
  

3. AVG()

Calcule la moyenne.


SELECT AVG(Montant) AS MontantMoyen
FROM Commandes;
  

4. MIN() et MAX()

Renvoient respectivement la plus petite et la plus grande valeur.


SELECT MIN(Prix) AS PrixMin, MAX(Prix) AS PrixMax
FROM Produits;
  

5. GROUP BY

Permet de regrouper les résultats par valeur commune.

Exemple : total des commandes par client


SELECT ClientID, SUM(Montant) AS Total
FROM Commandes
GROUP BY ClientID;
  

6. HAVING

Filtre les groupes (contrairement à WHERE qui filtre les lignes).

Exemple : clients ayant dépensé plus de 100€


SELECT ClientID, SUM(Montant) AS Total
FROM Commandes
GROUP BY ClientID
HAVING SUM(Montant) > 100;
  

7. Exemple complet

Tables utilisées :


Clients
-------------------------
ID | Nom
1  | Alice
2  | Bob
3  | Clara

Commandes
-------------------------
NumCommande | ClientID | Montant
101         | 1        | 120
102         | 2        | 80
103         | 1        | 45
104         | 3        | 200
  

1. Total dépensé par client


SELECT Clients.Nom, SUM(Commandes.Montant) AS Total
FROM Clients
JOIN Commandes ON Clients.ID = Commandes.ClientID
GROUP BY Clients.Nom;
  

2. Clients ayant dépensé plus de 150€


SELECT Clients.Nom, SUM(Commandes.Montant) AS Total
FROM Clients
JOIN Commandes ON Clients.ID = Commandes.ClientID
GROUP BY Clients.Nom
HAVING SUM(Commandes.Montant) > 150;
  

3. Nombre de commandes par client


SELECT ClientID, COUNT(*) AS NbCommandes
FROM Commandes
GROUP BY ClientID;
  

8. Résumé