Vous êtes sur la page 1sur 16

Faculté des Sciences Economiques et de Gestion de Sfax

Département : Informatique
Année universitaire : 2016-2017
Unité d’enseignement : Atelier de base de données
Enseignants : Fahmi BARGUI, Makram BOUJELBENE

Fiche N°3 Tri Regroupement

Objectifs de la leçon

A la fin de cette leçon, vous serez capable de :


Définir la projection en SQL.
Définir la restriction en SQL
Ecrire une instruction SELECT de base.
Limiter les lignes retournées par une instruction SELECT.

Plan de la leçon

1 Tri des données ............................................................................................................... 2


2 Fonctions de groupe (ou multi-lignes) ............................................................................. 3
2.1 Syntaxe .................................................................................................................... 3
2.2 Les fonctions de groupe............................................................................................ 6
2.2.1 AVG ................................................................................................................. 6
2.2.2 MAX et MIN..................................................................................................... 6
2.2.3 COUNT ............................................................................................................ 7
2.2.4 SUM ................................................................................................................. 7
2.2.5 Fonctions de groupe et valeur NULL ................................................................. 8
3 La clause GROUP BY .................................................................................................... 8
3.1 Syntaxe .................................................................................................................... 8
4 La clause HAVING ...................................................................................................... 11
4.1 syntaxe ................................................................................................................... 11
5 Imbrication des Fonctions de groupe ............................................................................. 12
6 QCM ............................................................................................................................ 14
7 Exercices ...................................................................................................................... 15

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]]]…

FROM table [alias]

[WHERE expression_logique]

[ ORDER BY expressioni [ASC| DESC] [, expressionj [ASC| DESC]] … ] ;

ASC et DESC précisent respectivement l’ordre croissant et décroissant.


L’ordre de tri par défaut est croissant (ASC).
La clause ORDER BY doit être la dernière clause d’une instruction SELECT.

2
2 Fonctions de groupe (ou multi-lignes)

2.1 Syntaxe

SELECT fonction_groupe1 ( {* | [DISTINCT|ALL] expr} ) [, function_groupe2 (…)…]

FROM table [alias]

[WHERE expression_logique] ;

[ ORDER BY expressioni [ASC| DESC] [, expressionj [ASC| DESC]] … ] ;

Le caractère * est utilisé avec la fonction de groupe COUNT.


ALL est l’option par défaut. En utilisant ALL, la fonction de groupe considère les
valeurs dupliquées.
En utilisant distinct, la fonction de groupe ne considère pas les valeurs
dupliquées.
Utilisées sans GROUP BY, les fonctions s’appliquent à un seul groupement de
données. Ce groupement peut être soit la totalité d’une table lorsque la clause
WHERE ramène toutes les lignes de cette table soit une partie d’une table ramenée
par la clause WHERE.

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).

Fonction de groupe Description


Calcule la moyenne arithmétique des valeurs
de l’expr. Le résultat est la somme des valeurs
AVG ([ DISTINCT | ALL] expr )
non NULL divisée par le nombre de valeurs
non NULL.

- COUNT (*) : retourne le nombre de ligne


sélectionné y compris les valeurs NULL et
dupliquées.
COUNT ({*| [DISTINCT|ALL] expr})
- COUNT([DISTINCT|ALL]expr}) :
retourne le nombre de lignes pour
lesquelles expr est non NULL.

MAX ( [ DISTINCT | ALL] expr ) Donne le maximum des valeurs de l’expr.

MIN ( [ DISTINCT | ALL] expr ) Donne le minimum des valeurs de l’expr.

STDDEV ( [ DISTINCT | ALL] expr ) Donne l'écart type de l’expr.

VARIANCE ( [ DISTINCT | ALL] expr ) Donne la variance des valeurs de l’expr.

Calcule la somme des valeurs non NULL de


SUM ([DISTINCT | ALL] expr)
l’expr.

4
5
2.2 Les fonctions de groupe

2.2.1 AVG

2.2.2 MAX et MIN

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

SELECT fonction_groupe1 ( {* | [DISTINCT|ALL] expr} ) [, function_groupe2 (…)…]

FROM table [alias]

[WHERE expression_logique] ;

[ GROUP BY expression1 [, expression2, …] ]

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

SELECT fonction_groupe1 ( {* | [DISTINCT|ALL] expr} ) [, function_groupe2 (…)…]

FROM table [alias]

[WHERE expression_logique] ;

[ GROUP BY expression1 [, expression2, …] ]

[HAVING condition_logique]

La condition logique ne peut contenir que des expressions GROUP BY ou des


fonctions de groupe.
Le serveur oracle réalise les opérations suivantes quand la clause HAVING est utilisée :
les lignes sont groupées conformément à la clause GROUP BY.
La fonction de groupe est appliquée sur chaque groupe
Les groupes pour lesquelles la condition logique introduite par la clause HAVING est
évaluée à vrai seront affichés.

11
Sum(mntop) >2000 = Faux
Sum(mntop) >2000 = Faux
Sum(mntop) >2000 = Faux
Sum(mntop) >2000 = Faux

Sum(mntop) >2000 = Vrai

Sum(mntop) >2000 = Faux

Sum(mntop) >2000 = Faux

Sum(mntop) >2000 = vrai

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;

5 Imbrication des Fonctions de groupe

Les fonctions de groupe peuvent être imbriquées.

Application de la fonction du groupe Application de la fonction du groupe


1 AVG sur les groupes créés selon numag
2 MAX sur les valeurs retournées par AVG

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

Exprimer chacune des requêtes suivantes en SQL.

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
…………………………………………………………………………...…
………………………………………………………………………...……
………………………………………………………………………..........

3. Afficher le plus grand montant emprunt accordé entre 2011 et 2015


…………………………………………………………………………...…
………………………………………………………………………...……
………………………………………………………………………..........
4. Afficher les comptes pour lesquels au minimum un emprunt est accordé
…………………………………………………………………………...…
………………………………………………………………………...……
………………………………………………………………………..........

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

Vous aimerez peut-être aussi