Copyright © Oracle Corporation, 1998. Tous droits réservés.
55
Regrouper les Données
avec les Fonctions de
Groupe
www.Tele...
5-2 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Objectifs
A la fin de ce chapitre, vous saurez :A la fin d...
5-3 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Fonctions de Groupe
Les fonctions de groupe agissent sur d...
5-4 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Types de Fonctions de Groupe
• AVG ([DISTINCT|ALL]n)
• COU...
5-6 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Fonctions AVG et SUM
AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)
-...
5-7 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Fonctions MIN et MAX
MIN et MAX s'utilisent avec tous type...
5-8 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Utilisation de la Fonction COUNT
COUNT(*)
---------
6
SQL>...
5-9 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Utilisation de la Fonction COUNT
COUNT(COUNT(exprexpr) ram...
5-10 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Fonctions de Groupe et Valeurs
NULL
Les fonctions de grou...
5-11 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Utilisation de la Fonction NVL
avec les Fonctions de Grou...
5-12 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Création de Groupes de Données
EMPEMP
"salaire"salaire
mo...
5-13 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Création de Groupes de Données :
la Clause GROUP BY
SELEC...
5-14 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Utilisation de la Clause GROUP BY
La clause GROUP BY doit...
5-15 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Utilisation de la Clause GROUP BY
La colonne citée en GRO...
5-16 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Regroupement sur Plusieurs
ColonnesEMPEMP
'"somme des'"so...
5-17 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Utilisation de la Clause GROUP BY
sur Plusieurs Colonnes
...
5-18 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Erreurs d'Utilisation des Fonctions
de Groupe dans une Re...
5-19 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Erreurs d'utilisation des Fonctions
de Groupe dans une Re...
5-20 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Exclusion de Groupes
"salaire maximum"salaire maximum
sup...
5-21 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Exclusion de Groupes : la
Clause HAVING
Utilisez la claus...
5-22 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Utilisation de la clause HAVING
SQL> SELECT deptno, max(s...
5-23 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Utilisation de la Clause HAVING
SQL> SELECT job, SUM(sal)...
5-24 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Imbrication des Fonctions
de Groupe
SQL> SELECT max(avg(s...
5-25 Copyright © Oracle Corporation, 1998. Tous droits réservés.
Résumé
SELECT column, group_function
FROM table
[WHERE co...
Prochain SlideShare
Chargement dans…5
×

SQL Oracle | Regrouper les Données avec les Fonctions de Groupe

1 414 vues

Publié le

SQL Oracle | Regrouper les Données avec les Fonctions de Groupe. Telecharger cours sql oracle gratuit. Objectifs du cours... http://www.telechargercours.com

Publié dans : Formation
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

SQL Oracle | Regrouper les Données avec les Fonctions de Groupe

  1. 1. Copyright © Oracle Corporation, 1998. Tous droits réservés. 55 Regrouper les Données avec les Fonctions de Groupe www.TelechargerCours.com
  2. 2. 5-2 Copyright © Oracle Corporation, 1998. Tous droits réservés. Objectifs A la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez : • Identifier les fonctions de groupe disponibles • Expliquer l'utilisation des fonctions de groupe • Regrouper les données avec la clause GROUP BY • Inclure ou exclure des groupes de lignes avec la clause HAVING www.TelechargerCours.com
  3. 3. 5-3 Copyright © Oracle Corporation, 1998. Tous droits réservés. Fonctions de Groupe Les fonctions de groupe agissent sur des groupes deLes fonctions de groupe agissent sur des groupes de lignes et donnent un résultat par groupe.lignes et donnent un résultat par groupe. EMPEMP "salaire maximum"salaire maximum de la table EMP"de la table EMP" DEPTNO SAL --------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 MAX(SAL) --------- 5000 www.TelechargerCours.com
  4. 4. 5-4 Copyright © Oracle Corporation, 1998. Tous droits réservés. Types de Fonctions de Groupe • AVG ([DISTINCT|ALL]n) • COUNT ({ *|[DISTINCT|ALL]expr}) • MAX ([DISTINCT|ALL]expr) • MIN ([DISTINCT|ALL]expr) • STDDEV ([DISTINCT|ALL]n) • SUM ([DISTINCT|ALL]n) • VARIANCE ([DISTINCT|ALL]n) www.TelechargerCours.com
  5. 5. 5-6 Copyright © Oracle Corporation, 1998. Tous droits réservés. Fonctions AVG et SUM AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------- 1400 1600 1250 5600 AVG et SUM s'utilisent avec des donnéesAVG et SUM s'utilisent avec des données numériques.numériques. SQL> SELECT AVG(sal), MAX(sal), 2 MIN(sal), SUM(sal) 3 FROM emp 4 WHERE job LIKE 'SALES%'; www.TelechargerCours.com
  6. 6. 5-7 Copyright © Oracle Corporation, 1998. Tous droits réservés. Fonctions MIN et MAX MIN et MAX s'utilisent avec tous types deMIN et MAX s'utilisent avec tous types de données.données. SQL> SELECT MIN(hiredate), MAX(hiredate) 2 FROM emp; MIN(HIRED MAX(HIRED --------- --------- 17-DEC-80 12-JAN-83 www.TelechargerCours.com
  7. 7. 5-8 Copyright © Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Fonction COUNT COUNT(*) --------- 6 SQL> SELECT COUNT(*) 2 FROM emp 3 WHERE deptno = 30; COUNT(*) ramène le nombre de lignesCOUNT(*) ramène le nombre de lignes d'une table.d'une table. www.TelechargerCours.com
  8. 8. 5-9 Copyright © Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Fonction COUNT COUNT(COUNT(exprexpr) ramène le nombre de lignes) ramène le nombre de lignes non NULL.non NULL. SQL> SELECT COUNT(comm) 2 FROM emp 3 WHERE deptno = 30; COUNT(COMM) ----------- 4 www.TelechargerCours.com
  9. 9. 5-10 Copyright © Oracle Corporation, 1998. Tous droits réservés. Fonctions de Groupe et Valeurs NULL Les fonctions de groupe ignorent lesLes fonctions de groupe ignorent les valeurs NULL des colonnes.valeurs NULL des colonnes. SQL> SELECT AVG(comm) 2 FROM emp; AVG(COMM) --------- 550 www.TelechargerCours.com
  10. 10. 5-11 Copyright © Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Fonction NVL avec les Fonctions de Groupe La fonction NVL force la prise en compteLa fonction NVL force la prise en compte des valeurs NULL dans les fonctions dedes valeurs NULL dans les fonctions de groupe.groupe. SQL> SELECT AVG(NVL(comm,0)) 2 FROM emp; AVG(NVL(COMM,0)) ---------------- 157.14286 www.TelechargerCours.com
  11. 11. 5-12 Copyright © Oracle Corporation, 1998. Tous droits réservés. Création de Groupes de Données EMPEMP "salaire"salaire moyen pourmoyen pour chaquechaque départementdépartement de la tablede la table EMP"EMP" 2916.66672916.6667 21752175 1566.66671566.6667 DEPTNO SAL --------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 DEPTNO AVG(SAL) ------- --------- 10 2916.6667 20 2175 30 1566.6667 www.TelechargerCours.com
  12. 12. 5-13 Copyright © Oracle Corporation, 1998. Tous droits réservés. Création de Groupes de Données : la Clause GROUP BY SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column]; Divisez une table en groupes de lignesDivisez une table en groupes de lignes avec la clause GROUP BY.avec la clause GROUP BY. www.TelechargerCours.com
  13. 13. 5-14 Copyright © Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Clause GROUP BY La clause GROUP BY doit inclure toutes lesLa clause GROUP BY doit inclure toutes les colonnes de la liste SELECT qui ne figurentcolonnes de la liste SELECT qui ne figurent pas dans des fonctions de groupe.pas dans des fonctions de groupe. SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 GROUP BY deptno; DEPTNO AVG(SAL) --------- --------- 10 2916.6667 20 2175 30 1566.6667 www.TelechargerCours.com
  14. 14. 5-15 Copyright © Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Clause GROUP BY La colonne citée en GROUP BY ne doit pasLa colonne citée en GROUP BY ne doit pas nécessairement figurer dans la liste SELECT.nécessairement figurer dans la liste SELECT. SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY deptno; AVG(SAL) --------- 2916.6667 2175 1566.6667 www.TelechargerCours.com
  15. 15. 5-16 Copyright © Oracle Corporation, 1998. Tous droits réservés. Regroupement sur Plusieurs ColonnesEMPEMP '"somme des'"somme des salairessalaires de la table EMPde la table EMP pour chaquepour chaque poste,poste, regroupés parregroupés par département"département" DEPTNO JOB SAL --------- --------- --------- 10 MANAGER 2450 10 PRESIDENT 5000 10 CLERK 1300 20 CLERK 800 20 CLERK 1100 20 ANALYST 3000 20 ANALYST 3000 20 MANAGER 2975 30 SALESMAN 1600 30 MANAGER 2850 30 SALESMAN 1250 30 CLERK 950 30 SALESMAN 1500 30 SALESMAN 1250 JOB SUM(SAL) --------- --------- CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 6000 CLERK 1900 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 5600 DEPTNO -------- 10 10 10 20 20 20 30 30 30 www.TelechargerCours.com
  16. 16. 5-17 Copyright © Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Clause GROUP BY sur Plusieurs Colonnes SQL> SELECT deptno, job, sum(sal) 2 FROM emp 3 GROUP BY deptno, job; DEPTNO JOB SUM(SAL) --------- --------- --------- 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900 ... 9 rows selected. www.TelechargerCours.com
  17. 17. 5-18 Copyright © Oracle Corporation, 1998. Tous droits réservés. Erreurs d'Utilisation des Fonctions de Groupe dans une Requête Toute colonne ou expression de la listeToute colonne ou expression de la liste SELECT autre qu'une fonction de groupe,SELECT autre qu'une fonction de groupe, doit être incluse dans la clause GROUP BY.doit être incluse dans la clause GROUP BY. SQL> SELECT deptno, COUNT(ename) 2 FROM emp; SQL> SELECT deptno, COUNT(ename) 2 FROM emp; SELECT deptno, COUNT(ename) * ERROR at line 1: ORA-00937: not a single-group group function SELECT deptno, COUNT(ename) * ERROR at line 1: ORA-00937: not a single-group group function Colonne m anquante dans la clause GROUP BY Colonne m anquante dans la clause GROUP BY www.TelechargerCours.com
  18. 18. 5-19 Copyright © Oracle Corporation, 1998. Tous droits réservés. Erreurs d'utilisation des Fonctions de Groupe dans une Requête • Vous ne pouvez utiliser la clause WHERE pour limiter les groupes. • Utilisez la clause HAVING. SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno; SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 2000 4 GROUP BY deptno; WHERE AVG(sal) > 2000 * ERROR at line 3: ORA-00934: group function is not allowed here WHERE AVG(sal) > 2000 * ERROR at line 3: ORA-00934: group function is not allowed here N'utilisez pas la clause W HERE pour lim iter les N'utilisez pas la clause W HERE pour lim iter les groupes groupes
  19. 19. 5-20 Copyright © Oracle Corporation, 1998. Tous droits réservés. Exclusion de Groupes "salaire maximum"salaire maximum supérieur àsupérieur à $2900 dans$2900 dans chaquechaque département"département" EMPEMP 50005000 30003000 28502850 DEPTNO SAL --------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 DEPTNO MAX(SAL) --------- --------- 10 5000 20 3000 www.TelechargerCours.com
  20. 20. 5-21 Copyright © Oracle Corporation, 1998. Tous droits réservés. Exclusion de Groupes : la Clause HAVING Utilisez la clause HAVING pour restreindre lesUtilisez la clause HAVING pour restreindre les groupesgroupes – Les lignes sont regroupées. – La fonction de groupe est appliquée. – Les groupes qui correspondent à la clause HAVING sont affichés. SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column];
  21. 21. 5-22 Copyright © Oracle Corporation, 1998. Tous droits réservés. Utilisation de la clause HAVING SQL> SELECT deptno, max(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING max(sal)>2900; DEPTNO MAX(SAL) --------- --------- 10 5000 20 3000 www.TelechargerCours.com
  22. 22. 5-23 Copyright © Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Clause HAVING SQL> SELECT job, SUM(sal) PAYROLL 2 FROM emp 3 WHERE job NOT LIKE 'SALES%' 3 GROUP BY job 4 HAVING SUM(sal)>5000 5 ORDER BY SUM(sal); JOB PAYROLL --------- --------- ANALYST 6000 MANAGER 8275 www.TelechargerCours.com
  23. 23. 5-24 Copyright © Oracle Corporation, 1998. Tous droits réservés. Imbrication des Fonctions de Groupe SQL> SELECT max(avg(sal)) 2 FROM emp 3 GROUP BY deptno; MAX(AVG(SAL)) ------------- 2916.6667 Afficher le salaire moyen maximum.Afficher le salaire moyen maximum. www.TelechargerCours.com
  24. 24. 5-25 Copyright © Oracle Corporation, 1998. Tous droits réservés. Résumé SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column]; www.TelechargerCours.com

×