Académique Documents
Professionnel Documents
Culture Documents
Département : Informatique
Année universitaire : 2016-2017
Unité d’enseignement : Atelier de base de données
Enseignants : Fahmi BARGUI, Makram BOUJELBENE
Objectifs de la leçon
Plan de la leçon
1
1 Tri des données
Les lignes constituant le résultat d’un SELECT sont obtenues dans un ordre quelconque. La
clause ORDER BY précise l’ordre des lignes sélectionnées.
Syntaxe
SELECT * | [ALL | {DISTINCT| UNIQUE}] expression1 [[AS] alias1] [,expression 2 [[AS] alias2]]]…
[WHERE expression_logique]
2
2 Fonctions de groupe (ou multi-lignes)
2.1 Syntaxe
[WHERE expression_logique] ;
3
Le tableau suivant présente les principales fonctions de groupe. L’option DISTINCT évite
les duplicatas alors que ALL les prend en compte (par défaut). À l’exception de COUNT
(*), toutes les fonctions ignorent les valeurs NULL (il faudra utiliser NVL pour contrer cet
effet).
4
5
2.2 Les fonctions de groupe
2.2.1 AVG
Les fonctions MIN et MAX peuvent être utilisées avec les dates, les chaînes de caractères et
les valeurs numériques.
6
2.2.3 COUNT
2.2.4 SUM
7
2.2.5 Fonctions de groupe et valeur NULL
Jusqu’à ce niveau les fonctions de groupe s’appliquent sur toute ou partie d’une table. Pour
restreindre l’application d’une fonction de groupe sur un ou plusieurs groupes de données, il
faut utiliser les clauses (GROUP BY et HAVING).
3 La clause GROUP BY
3.1 Syntaxe
[WHERE expression_logique] ;
8
Résultat de SUM
Groupe 1 pour Groupe 1
Résultat de SUM
Groupe 2
pour Groupe 2
Groupe 3 …
Résultat de SUM
Groupe 4
pour Groupe 4
La clause GROUP BY; crée des groupes de données tels que chaque groupe contient
des valeurs identiques pour expression1 [, expression2, …] ].
La clause WHERE s’applique avant GROUP BY. Elle permet d’exclure certaines
lignes avant de créer les groupes.
Toute expression présente devant le SELECT doit être présente devant GROUP BY.
9
Toute expression devant le GROUP BY peut ne pas être présente (pas forcément)
devant le SELECT.
Les alias des expressions ne doivent pas être utilisés dans la clause GROUP BY
10
4 La clause HAVING
4.1 syntaxe
[WHERE expression_logique] ;
[HAVING condition_logique]
11
Sum(mntop) >2000 = Faux
Sum(mntop) >2000 = Faux
Sum(mntop) >2000 = Faux
Sum(mntop) >2000 = Faux
la clause HAVING est utilisée pour sélectionner des groupes alors que la clause
WHERE est utilisée pour sélectionner des lignes;
AVG(salbasemp) = 1780
AVG(salbasemp) = 1780
AVG(salbasemp) = 1833,3333333
12
Pour les fonctions de groupe imbriquées, la clause GROUP BY est obligatoire.
L’imbrication des fonctions de groupe donne toujours une seule valeur. Cette valeur
ne peut pas être associée à une colonne (ou expression) qui prend différentes valeurs.
Donc, pour les fonctions de groupe imbriquées, aucune expression n’est autorisée
devant le SELECT.
13
6 QCM
1. Répondez par Vrai (V) ou Faux (F). Les écritures suivantes sont conformes à la
syntaxe d’une instruction SELECT.
N° Ecriture Rép Justification
1 select numcl, sum(soldecpt)
from compte;
2 select sum(soldecpt)
from compte
group by numcl;
3 select sum(soldecpt)
from compte
order by numcl
group by numcl;
4 SELECT sum(mntop), typop type_opération
FROM operation
GROUP BY typop;
5 SELECT sum(mntop),typop type_opération
FROM operation
GROUP BY type_opération;
6 SELECT sum(mntop), typop -
FROM operation
GROUP BY numcpt, typop
HAVING numcpt=100
AND upper(typop)='AGIOS';
7 SELECT sum(mntop), typop
FROM operation
GROUP BY typop
HAVING numcpt=100;
8 SELECT sum(mntop), typop
FROM operation
GROUP BY typop
HAVING AVG(mntop)>100;
9 SELECT numcpt, sum(mntop), typop
FROM operation
GROUP BY typop
having AVG(mntop)>100;
14
7 Exercices
1. Afficher les opérations triées par ordre croissant des numéros comptes et des
dates opérations.
…………………………………………………………………………...…
………………………………………………………………………...……
………………………………………………………………………..........
2. Afficher le nombre de versements réalisés par compte et par trimestre
…………………………………………………………………………...…
………………………………………………………………………...……
………………………………………………………………………..........
5. Afficher les comptes pour lesquels au minimum deux emprunts sont accordés
…………………………………………………………………………...…
………………………………………………………………………...……
………………………………………………………………………..........
15
6. Afficher le nombre d’agences ayant des employés.
…………………………………………………………………………...…
………………………………………………………………………...……
………………………………………………………………………..........
16