80
Chapitre 5 • Le langage SQL DML
select NPRO, LIBELLE, QSTOCK
from
CLIENT
where QSTOCK < 0
and extract(day of current_date) = 1
5.2.9 Les fonctions agrégatives (ou statistiques)
Il existe également des fonctions prédéfinies qui donnent une valeur agrégée
calculée pour les lignes sélectionnées :
• count(*) donne le nombre de lignes trouvées,
• count(nom-colonne) donne le nombre de valeurs de la colonne,
• avg(nom-colonne) donne la moyenne des valeurs de la colonne,
• sum(nom-colonne) donne la somme des valeurs de la colonne,
• min(nom-colonne) donne le minimum des valeurs de la colonne,
• max(nom-colonne) donne le maximum des valeurs de la colonne.
La requête ci-dessous fournit une table d’une ligne décrivant la répartition
(moyenne, écart maximum, nombre) des montants des comptes des clients de
Namur :
select 'Namur',avg(COMPTE) as Moyenne,
max(COMPTE)-min(COMPTE) as Ecart_max,
count(*) as Nombre
from
CLIENT
where LOCALITE = 'Namur'
La table résultat serait la suivante :
Il est à noter, comme nous allons l’expérimenter, que ces fonctions, à l’exception de
la première (count), ne considèrent que les valeurs non null de la colonne. En
outre, chaque valeur est prise en compte, même si elle apparaît plus d’une fois.
Remarque
Le nom de colonne dans les expressions sum et avg peut être remplacé par toute
expression à valeur numérique, comme dans la requête suivante, qui demande la
valeur des stocks des produits en sapin :
select sum(QSTOCK*PRIX)
from
PRODUIT
where LIBELLE like '%SAPIN%'
a) Attention aux valeurs dupliquées
Ici encore l’existence de lignes dupliquées dans les données avant application de la
fonction agrégative peut poser un problème. C’est ainsi que la requête suivante ne
Namur
Moyenne Ecart-max
Nombre
Namur
-2520
4580
4
Chapitre 5 • Le langage SQL DML
select NPRO, LIBELLE, QSTOCK
from
CLIENT
where QSTOCK < 0
and extract(day of current_date) = 1
5.2.9 Les fonctions agrégatives (ou statistiques)
Il existe également des fonctions prédéfinies qui donnent une valeur agrégée
calculée pour les lignes sélectionnées :
• count(*) donne le nombre de lignes trouvées,
• count(nom-colonne) donne le nombre de valeurs de la colonne,
• avg(nom-colonne) donne la moyenne des valeurs de la colonne,
• sum(nom-colonne) donne la somme des valeurs de la colonne,
• min(nom-colonne) donne le minimum des valeurs de la colonne,
• max(nom-colonne) donne le maximum des valeurs de la colonne.
La requête ci-dessous fournit une table d’une ligne décrivant la répartition
(moyenne, écart maximum, nombre) des montants des comptes des clients de
Namur :
select 'Namur',avg(COMPTE) as Moyenne,
max(COMPTE)-min(COMPTE) as Ecart_max,
count(*) as Nombre
from
CLIENT
where LOCALITE = 'Namur'
La table résultat serait la suivante :
Il est à noter, comme nous allons l’expérimenter, que ces fonctions, à l’exception de
la première (count), ne considèrent que les valeurs non null de la colonne. En
outre, chaque valeur est prise en compte, même si elle apparaît plus d’une fois.
Remarque
Le nom de colonne dans les expressions sum et avg peut être remplacé par toute
expression à valeur numérique, comme dans la requête suivante, qui demande la
valeur des stocks des produits en sapin :
select sum(QSTOCK*PRIX)
from
PRODUIT
where LIBELLE like '%SAPIN%'
a) Attention aux valeurs dupliquées
Ici encore l’existence de lignes dupliquées dans les données avant application de la
fonction agrégative peut poser un problème. C’est ainsi que la requête suivante ne
Namur
Moyenne Ecart-max
Nombre
Namur
-2520
4580
4
