Vous êtes sur la page 1sur 20

2.1 Introduction 2.

5 Les fonctions agrégatives


2.2 Extraction simple 2.6 Les sous-requêtes
2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes
2.4 Données extraites et dérivées

2. SQL DML LANGUAGE (1)

DML Instructions
Data Manipulation Language (langage de manipulation de données)

Support du chapitre 7, Le langage SQL DML (1)


de l'ouvrage Bases de données, J-L Hainaut, Dunod 2009.
2.1 Introduction 2.5 Les fonctions agrégatives
2.2 Extraction simple 2.6 Les sous-requêtes
2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes
2.4 Données extraites et dérivées

2. SQL DML LANGUAGE (1)


Contenu

Aggregate functions
Group By
Subqueries
Quantifiers over sets
2.5 Aggregate functions (statistics)

Aggregate functions perform a calculation on a set of values and return a single value

❖COUNT counts how many rows are in a particular column.


❖SUM adds together all the values in a particular column.
❖MIN and MAX return the lowest and highest values in a particular column, respectively.
❖AVG calculates the average of a group of selected values.
2.5 Aggregate functions (statistics)

select 'Namur',avg(COMPTE) as Moyenne,


max(COMPTE)-min(COMPTE) as Ecart_max,
count(*) as Nombre
from CLIENT
where LOCALITE = 'Namur';
2.5 Aggregate functions (statistics)

select 'Namur',avg(COMPTE) as Moyenne,


max(COMPTE)-min(COMPTE) as Ecart_max,
count(*) as Nombre
from CLIENT
where LOCALITE = 'Namur';

Namur Moyenne Ecart_max Nombre le résultat ne comprend


Namur -2520 4580 4
qu'une seule ligne
2.5 Aggregate functions (statistics)

select 'Namur',avg(COMPTE) as Moyenne,


max(COMPTE)-min(COMPTE) as Ecart_max,
count(*) as Nombre
from CLIENT
where LOCALITE = 'Namur';

Namur Moyenne Ecart_max Nombre le résultat ne comprend


Namur -2520 4580 4
qu'une seule ligne

select sum(QSTOCK*PRIX)
from PRODUIT
where LIBELLE like '%SAPIN%';
2.5 Aggregate functions (statistics)

Attention aux valeurs dupliquées


select count(NCLI)
from COMMANDE;

count(NCLI)

select distinct count(NCLI)


from COMMANDE;

count(NCLI)

select count(distinct NCLI)


from COMMANDE;

count(NCLI)

5
2.5 Aggregate functions (statistics)

select count(NCLI) as Nombre,


count(NOM) as Noms,
count(LOCALITE) as Localités,
count(CAT) as Catégories
from CLIENT;

Nombre Noms Localités Catégories

16 16 16 14

select count(distinct NCLI) as Nombre,


count(distinct NOM) as Noms,
count(distinct LOCALITE) as Localités,
count(distinct CAT) as Catégories
from CLIENT;

Nombre Noms Localités Catégories

16 15 7 4
2.5 Aggregate functions (statistics)

Attention aux ensembles vides

select count(*) as Nombre, sum(COMPTE) as Somme,


max(CAT) as Max
from CLIENT
where LOCALITE = 'Alger';

Nombre Somme Max

0 <null> <null>
Group BY et having
Source : https://developpement-informatique.com/article/294/organiser-des-
donnees-group-by-et-having
Syntaxe
SELECT colonne1, colonne 2, … colonne N,
fonction_agregation(nom_colonne)
FROM tables
[WHERE conditions]
GROUP BY colonne1 , colonne 2, …. colonne N;

colonne1, colonne2, ... colonneN - spécifie les colonnes(ou expressions) qui ne sont pas encapsulées dans une
fonction d'agrégation et doivent être incluses dans la clause GROUP BY.
fonction_agregation (nom_colonne) - Nom de la fonction d'agrégation utilisée, par exemple, SUM(), AVG (),…
WHERE conditions - C'est optionnel. Elle spécifie les conditions qui doivent être remplies pour que les enregistrements
soient sélectionnés.
Exemple

• Soit la requête

SELECT Age FROM Employes;

Quel est le résultat?


Exemple
Cette requête produira le jeu de résultats suivant :

+-----+
| Age |
+-----+
| 25 |
| 30 |
| 29 |
| 30 |
| 30 |
| 29 |
+-----+
Exemple
Supposons que nous voulions obtenir les valeurs uniques pour Age.

SELECT Age
FROM Employes
GROUP BY Age;

+-----+
| Age |
+-----+
| 25 |
| 29 |
| 30 |
+-----+

La clause GROUP BY a regroupé tous les employés de la valeur Age="25" et n'a renvoyée
qu'une seule ligne. La même chose avec les valeurs "29" et "30".
Exemple 1
Comment compter le nombre d'employés de chaque classe d’ Age?
Exemple 1
Comment compter le nombre d'employés de chaque classe (groupe) d’ Age?

à l'aide de la clause COUNT

SELECT Age, count(*) AS "Nombre d'employés"


FROM Employes
GROUP BY Age;
Exemple 2
Comment connaitre le salaire moyen sur chaque groupe d'âge?
Exemple 2
Comment connaitre le salaire moyen sur chaque groupe d'âge?

SELECT Age, AVG(Salaire) AS "Salaire moyen"


FROM Employes
GROUP BY Age;
Exemple 3
Comment récupérer l'identifiant du département et le nombre d'employés dans chaque département?
Exemple 3
Comment récupérer l'identifiant du département et le nombre d'employés dans chaque département?

Toujours à l'aide de la clause COUNT

SELECT Dep, COUNT(*) AS "Nombre d'employés"


FROM Employes
GROUP BY Dep;

Vous aimerez peut-être aussi