Vous êtes sur la page 1sur 28

5

Crer un tat avec des donnes agrges


l'aide des fonctions de groupe

Copyright 2007, Oracle. Tous droits rservs.

Objectifs
A la fin de ce chapitre, vous pourrez :
identifier les fonctions de groupe disponibles
expliquer l'utilisation des fonctions de groupe
regrouper des donnes l'aide de la clause GROUP BY
inclure ou exclure des lignes groupes l'aide
de la clause HAVING

5-2

Copyright 2007, Oracle. Tous droits rservs.

Contenu du chapitre
Fonctions de groupe :

Types et syntaxe
Utiliser AVG, SUM, MIN, MAX, COUNT
Utiliser le mot-cl DISTINCT avec des fonctions de groupe
Valeurs NULL dans une fonction de groupe

Regrouper des lignes :


Clause GROUP BY
Clause HAVING

Imbriquer des fonctions de groupe

5-3

Copyright 2007, Oracle. Tous droits rservs.

Fonctions de groupe : Prsentation


Les fonctions de groupe oprent sur des ensembles de lignes et
fournissent un rsultat par ensemble.
EMPLOYEES

Salaire maximum
dans la table
EMPLOYEES

5-4

Copyright 2007, Oracle. Tous droits rservs.

Types de fonctions de groupe

5-5

AVG
COUNT
MAX
MIN
STDDEV
SUM
VARIANCE

Fonctions
de groupe

Copyright 2007, Oracle. Tous droits rservs.

Fonctions de groupe : Syntaxe

SELECT
FROM
[WHERE
[ORDER BY

5-6

group_function(column), ...
table
condition]
column];

Copyright 2007, Oracle. Tous droits rservs.

Utiliser les fonctions AVG et SUM


Vous pouvez utiliser les fonctions AVG et SUM
pour des donnes numriques.
SELECT AVG(salary), MAX(salary),
MIN(salary), SUM(salary)
FROM
employees
WHERE job_id LIKE '%REP%';

5-7

Copyright 2007, Oracle. Tous droits rservs.

Utiliser les fonctions MIN et MAX


Vous pouvez utiliser les fonctions MIN et MAX
pour les donnes de type nombre, caractre et date.
SELECT MIN(hire_date), MAX(hire_date)
FROM
employees;

5-8

Copyright 2007, Oracle. Tous droits rservs.

Utiliser la fonction COUNT


COUNT(*) renvoie le nombre de lignes d'une table :
SELECT COUNT(*)
FROM
employees
WHERE department_id = 50;

COUNT(expr) renvoie le nombre de lignes comportant


des valeurs non NULL pour expr :
SELECT COUNT(commission_pct)
FROM
employees
WHERE department_id = 80;

5-9

Copyright 2007, Oracle. Tous droits rservs.

Utiliser le mot-cl DISTINCT


COUNT(DISTINCT expr) renvoie le nombre de valeurs
non NULL uniques de expr.
Pour afficher le nombre de valeurs de dpartement distinctes
dans la table EMPLOYEES :
SELECT COUNT(DISTINCT department_id)
FROM
employees;

5 - 10

Copyright 2007, Oracle. Tous droits rservs.

Fonctions de groupe et valeurs NULL


Les fonctions de groupe ignorent les valeurs NULL
de la colonne considre :

SELECT AVG(commission_pct)
FROM
employees;

La fonction NVL force les fonctions de groupe inclure


les valeurs NULL :

5 - 11

SELECT AVG(NVL(commission_pct, 0))


FROM
employees;

Copyright 2007, Oracle. Tous droits rservs.

Contenu du chapitre
Fonctions de groupe :

Types et syntaxe
Utiliser AVG, SUM, MIN, MAX, COUNT
Utiliser le mot-cl DISTINCT avec des fonctions de groupe
Valeurs NULL dans une fonction de groupe

Regrouper des lignes :


Clause GROUP BY
Clause HAVING

Imbriquer des fonctions de groupe

5 - 12

Copyright 2007, Oracle. Tous droits rservs.

Crer des groupes de donnes


EMPLOYEES
4400
9500

Salaire moyen dans la


table EMPLOYEES pour
chaque dpartement

3500

6400

10033

5 - 13

Copyright 2007, Oracle. Tous droits rservs.

Crer des groupes de donnes : Syntaxe


de la clause GROUP BY
SELECT
column, group_function(column)
FROM
table
[WHERE
condition]
[GROUP BY group_by_expression]
[ORDER BY column];

Vous pouvez diviser une table en groupes de plus petite


taille l'aide de la clause GROUP BY.

5 - 14

Copyright 2007, Oracle. Tous droits rservs.

Utiliser la clause GROUP BY


Toutes les colonnes de la liste SELECT qui ne figurent pas dans
des fonctions de groupe doivent tre prsentes
dans la clause GROUP BY.
SELECT
department_id, AVG(salary)
FROM
employees
GROUP BY department_id ;

5 - 15

Copyright 2007, Oracle. Tous droits rservs.

Utiliser la clause GROUP BY


La colonne GROUP BY ne doit pas ncessairement figurer
dans la liste SELECT.
SELECT
AVG(salary)
FROM
employees
GROUP BY department_id ;

5 - 16

Copyright 2007, Oracle. Tous droits rservs.

Procder un regroupement
sur la base de plusieurs colonnes
EMPLOYEES

Ajoutez les salaires de la table


EMPLOYEES pour tous les postes,
regroups par dpartement.

5 - 17

Copyright 2007, Oracle. Tous droits rservs.

Utiliser la clause GROUP BY


sur plusieurs colonnes
SELECT
FROM
GROUP BY
ORDER BY

5 - 18

department_id dept_id, job_id, SUM(salary)


employees
department_id, job_id
department_id;

Copyright 2007, Oracle. Tous droits rservs.

Interrogations non autorises


avec les fonctions de groupe
Toute colonne ou expression de la liste SELECT qui n'est pas
une fonction d'agrgation doit figurer dans la clause GROUP BY :
SELECT department_id, COUNT(last_name)
FROM
employees;
Il est ncessaire d'ajouter une clause
GROUP BY pour compter les noms
associs chaque department_id.
SELECT department_id, job_id, COUNT(last_name)
FROM
employees
GROUP BY department_id;
Ajoutez job_id dans la clause GROUP
BY ou supprimez la colonne job_id de
la liste SELECT.
5 - 19

Copyright 2007, Oracle. Tous droits rservs.

Interrogations non autorises


avec les fonctions de groupe
Vous ne pouvez pas utiliser la clause WHERE
pour restreindre des groupes.
Pour cela, vous pouvez utiliser la clause HAVING.
Vous ne pouvez pas utiliser de fonctions de groupe
dans la clause WHERE.
SELECT
FROM
WHERE
GROUP BY

department_id, AVG(salary)
employees
AVG(salary) > 8000
department_id;
Impossible d'utiliser
la clause WHERE pour
restreindre des groupes

5 - 20

Copyright 2007, Oracle. Tous droits rservs.

Restreindre les rsultats d'un groupe


EMPLOYEES

Salaire maximum par


dpartement lorsqu'il est
suprieur 10 000 $

5 - 21

Copyright 2007, Oracle. Tous droits rservs.

Restreindre les rsultats d'un groupe


avec la clause HAVING
Lorsque vous utilisez la clause HAVING, le serveur Oracle
restreint les groupes de la manire suivante :
1. Les lignes sont regroupes.
2. La fonction de groupe est applique.
3. Les groupes correspondant la clause HAVING
sont affichs.
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY

5 - 22

column, group_function
table
condition]
group_by_expression]
group_condition]
column];

Copyright 2007, Oracle. Tous droits rservs.

Utiliser la clause HAVING

SELECT
FROM
GROUP BY
HAVING

5 - 23

department_id, MAX(salary)
employees
department_id
MAX(salary)>10000 ;

Copyright 2007, Oracle. Tous droits rservs.

Utiliser la clause HAVING

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

5 - 24

job_id, SUM(salary) PAYROLL


employees
job_id NOT LIKE '%REP%'
job_id
SUM(salary) > 13000
SUM(salary);

Copyright 2007, Oracle. Tous droits rservs.

Contenu du chapitre
Fonctions de groupe :

Types et syntaxe
Utiliser AVG, SUM, MIN, MAX, COUNT
Utiliser le mot-cl DISTINCT avec des fonctions de groupe
Valeurs NULL dans une fonction de groupe

Regrouper des lignes :


Clause GROUP BY
Clause HAVING

Imbriquer des fonctions de groupe

5 - 25

Copyright 2007, Oracle. Tous droits rservs.

Imbriquer des fonctions de groupe


Affichez le salaire moyen maximum :
SELECT
MAX(AVG(salary))
FROM
employees
GROUP BY department_id;

5 - 26

Copyright 2007, Oracle. Tous droits rservs.

Synthse
Ce chapitre vous a permis d'apprendre :
utiliser les fonctions de groupe COUNT, MAX, MIN, SUM
et AVG
crire des interrogations qui utilisent la clause GROUP BY
crire des interrogations qui utilisent la clause HAVING
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY

5 - 27

column, group_function
table
condition]
group_by_expression]
group_condition]
column];

Copyright 2007, Oracle. Tous droits rservs.

Prsentation de l'exercice 5
Dans cet exercice, vous allez :
crire des interrogations qui utilisent les fonctions de groupe
procder des regroupements de lignes afin d'obtenir
plusieurs rsultats
restreindre les groupes l'aide de la clause HAVING

5 - 28

Copyright 2007, Oracle. Tous droits rservs.

Vous aimerez peut-être aussi

  • HAS, Bilan Martial, 2011
    HAS, Bilan Martial, 2011
    Document82 pages
    HAS, Bilan Martial, 2011
    Michael ShOw
    Pas encore d'évaluation
  • Oracle J Developer A DF VFR
    Oracle J Developer A DF VFR
    Document54 pages
    Oracle J Developer A DF VFR
    Michael ShOw
    Pas encore d'évaluation
  • Les 11
    Les 11
    Document44 pages
    Les 11
    Michael ShOw
    Pas encore d'évaluation
  • Les 03
    Les 03
    Document30 pages
    Les 03
    Michael ShOw
    Pas encore d'évaluation
  • Les 09
    Les 09
    Document45 pages
    Les 09
    Michael ShOw
    Pas encore d'évaluation
  • Les 07
    Les 07
    Document23 pages
    Les 07
    Michael ShOw
    Pas encore d'évaluation
  • Guide Développement Orchestra
    Guide Développement Orchestra
    Document5 pages
    Guide Développement Orchestra
    Michael ShOw
    Pas encore d'évaluation
  • Les 10
    Les 10
    Document39 pages
    Les 10
    Michael ShOw
    Pas encore d'évaluation
  • Les 08
    Les 08
    Document26 pages
    Les 08
    Michael ShOw
    Pas encore d'évaluation
  • Les 02
    Les 02
    Document38 pages
    Les 02
    Michael ShOw
    Pas encore d'évaluation
  • Les 04
    Les 04
    Document37 pages
    Les 04
    Michael ShOw
    Pas encore d'évaluation
  • Les 01
    Les 01
    Document29 pages
    Les 01
    Michael ShOw
    Pas encore d'évaluation
  • Les 06
    Les 06
    Document36 pages
    Les 06
    Michael ShOw
    Pas encore d'évaluation
  • Audit Intrusion
    Audit Intrusion
    Document57 pages
    Audit Intrusion
    Mehdi Sarah
    Pas encore d'évaluation
  • Cours Jacobi Gaussseidel Gradients PDF
    Cours Jacobi Gaussseidel Gradients PDF
    Document4 pages
    Cours Jacobi Gaussseidel Gradients PDF
    MerryLovelly
    Pas encore d'évaluation
  • Cours Jacobi Gaussseidel Gradients PDF
    Cours Jacobi Gaussseidel Gradients PDF
    Document4 pages
    Cours Jacobi Gaussseidel Gradients PDF
    MerryLovelly
    Pas encore d'évaluation
  • Semaphores
    Semaphores
    Document39 pages
    Semaphores
    Michael ShOw
    Pas encore d'évaluation
  • Comptabilite Analytique
    Comptabilite Analytique
    Document99 pages
    Comptabilite Analytique
    Michael ShOw
    Pas encore d'évaluation