Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

Les données agrégées

Icône Présentation
1 / 1

Les fonctions agrégatives (ou statistiques)

En SQL, il existe des fonctions qui donnent une valeur agrégée calculée pour les lignes sélectionnées :

  • COUNT(*) : donne le nombre de lignes sélectionnées

  • COUNT(colonne) : donne le nombre de valeurs de la colonne

  • AVG(colonne) : donne la moyenne des valeurs de la colonne

  • SUM(colonne) : donne la somme des valeurs de la colonne

  • MIN(colonne) : donne le minimum des valeurs de la colonne

  • MAX(colonne) : donne le maximum des valeurs de la colonne

  • Remarque : La colonne peut être remplacée par une expression arithmétique.

Exemples

Exemple 1

SELECT SUM(stock * prix) AS 'Valeur du stock' FROM Produits;
Produits
Valeur du stock
16300

Pour info :

SELECT stock * prix AS 'Valeurs des stocks' FROM Produits;
Produits
Valeurs des stocks
750
3000
12000
150
400

Exemple 2

Donner la répartition (moyenne, écart maximum, nombre) des montants des comptes des clients

SELECT AVG(Compte) AS 'Moyenne',
MAX(Compte) - MIN(Compte) AS 'Écart max',
COUNT(*) AS 'Nombre de clients'
FROM Clients;
Clients
MoyenneÉcart maxNombre de clients
14666.444444444445 125094 9

Remarques

Remarques

Count

Supposons que l’on veuille obtenir le nombre de clients ayant passés au moins une commande

Requête erronée
SELECT COUNT( numeroClient ) FROM Commandes ;
Produits
COUNT( numeroClient )
7

Cette requête affiche le nombre de commandes, pas le nombre de clients ! Car :

SELECT numeroClient FROM Commandes ;
Produits
numeroClient
1
1
3
4
5
5
4

contient bien 7 lignes, mais répètent les numéros de clients.

Requête correcte
SELECT COUNT( DISTINCT numeroClient ) FROM Commandes;
Produits
COUNT( DISTINCT numeroClient )
4

Ensemble vide

Quelle est la valeur retournée par une fonction agrégative produit à partir d’un ensemble vide ?

Réponse : 0 pour la fonction COUNT et inconnu pour les autres

SELECT
COUNT (*) AS 'Nombre',
SUM(compte) AS 'Somme',
MAX (categorie) AS 'Max'
FROM Clients
WHERE ville = 'Rouen';
Produits
NombreSommeMax
0