La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Copyright Oracle Corporation, 1998. Tous droits réservés. 5 Regrouper les Données avec les Fonctions de Groupe.

Présentations similaires


Présentation au sujet: "Copyright Oracle Corporation, 1998. Tous droits réservés. 5 Regrouper les Données avec les Fonctions de Groupe."— Transcription de la présentation:

1 Copyright Oracle Corporation, 1998. Tous droits réservés. 5 Regrouper les Données avec les Fonctions de Groupe

2 5-2 Copyright Oracle Corporation, 1998. Tous droits réservés. Objectifs 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 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

3 5-3 Copyright Oracle Corporation, 1998. Tous droits réservés. Fonctions de Groupe Les fonctions de groupe agissent sur des groupes de lignes et donnent un résultat par groupe. EMP "salaire maximum de la table EMP" DEPTNO SAL --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 MAX(SAL) --------- 5000

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

5 5-5 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]x) SUM ([DISTINCT|ALL]n) VARIANCE ([DISTINCT|ALL]x) AVG ([DISTINCT|ALL]n) COUNT ({ *|[DISTINCT|ALL]expr}) MAX ([DISTINCT|ALL]expr) MIN ([DISTINCT|ALL]expr) STDDEV ([DISTINCT|ALL]x) SUM ([DISTINCT|ALL]n) VARIANCE ([DISTINCT|ALL]x)

6 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ées numériques. SQL> SELECTAVG(sal), MAX(sal), 2MIN(sal), SUM(sal) 3FROMemp 4WHEREjob LIKE 'SALES%';

7 5-7 Copyright Oracle Corporation, 1998. Tous droits réservés. Fonctions MIN et MAX MIN et MAX s'utilisent avec tous types de données. SQL> SELECTMIN(hiredate), MAX(hiredate) 2 FROMemp; MIN(HIRED MAX(HIRED --------- 17-DEC-80 12-JAN-83

8 5-8 Copyright Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Fonction COUNT COUNT(*) --------- 6 SQL> SELECTCOUNT(*) 2 FROMemp 3 WHEREdeptno = 30; COUNT(*) ramène le nombre de lignes d'une table.

9 5-9 Copyright Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Fonction COUNT COUNT(expr) ramène le nombre de lignes non NULL. SQL> SELECTCOUNT(comm) 2 FROMemp 3 WHEREdeptno = 30; COUNT(COMM) ----------- 4

10 5-10 Copyright Oracle Corporation, 1998. Tous droits réservés. Fonctions de Groupe et Valeurs NULL Les fonctions de groupe ignorent les valeurs NULL des colonnes. SQL> SELECT AVG(comm) 2 FROM emp; AVG(COMM) --------- 550

11 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 compte des valeurs NULL dans les fonctions de groupe. SQL> SELECT AVG(NVL(comm,0)) 2 FROM emp; AVG(NVL(COMM,0)) ---------------- 157.14286

12 5-12 Copyright Oracle Corporation, 1998. Tous droits réservés. Création de Groupes de Données EMP "salaire moyen pour chaque département de la table EMP" 2916.6667 2916.6667 2175 2175 1566.6667 1566.6667 DEPTNO SAL --------- 10 2450 10 5000 10 1300 20 800 20 1100 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

13 5-13 Copyright Oracle Corporation, 1998. Tous droits réservés. Création de Groupes de Données : la Clause GROUP BY SELECTcolumn, group_function FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [ORDER BYcolumn]; Divisez une table en groupes de lignes avec la clause GROUP BY.

14 5-14 Copyright Oracle Corporation, 1998. Tous droits réservés. Utilisation de la Clause GROUP BY La clause GROUP BY doit inclure toutes les colonnes de la liste SELECT qui ne figurent 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

15 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 pas 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

16 5-16 Copyright Oracle Corporation, 1998. Tous droits réservés. Regroupement sur Plusieurs Colonnes EMP '"somme des salaires de la table EMP de la table EMP pour chaque poste, pour chaque poste, regroupés par département" DEPTNO JOB SAL --------- --------- --------- 10 MANAGER 2450 10 PRESIDENT 5000 10 CLERK 1300 20 CLERK 800 20 CLERK 1100 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 20 30

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

18 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 liste SELECT autre qu'une fonction de groupe, doit être incluse dans la clause GROUP BY. SQL> SELECTdeptno, COUNT(ename) 2 FROMemp; SQL> SELECTdeptno, COUNT(ename) 2 FROMemp; 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 manquante dans la clause GROUP BY

19 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. 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 WHERE pour limiter les groupes

20 5-20 Copyright Oracle Corporation, 1998. Tous droits réservés. Exclusion de Groupes "salaire maximum supérieur à $2900 dans chaque département" EMP 5000 3000 2850 DEPTNO SAL --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 DEPTNO MAX(SAL) --------- 10 5000 20 3000

21 5-21 Copyright Oracle Corporation, 1998. Tous droits réservés. Exclusion de Groupes : la Clause HAVING Utilisez la clause HAVING pour restreindre les groupes – Les lignes sont regroupées. – La fonction de groupe est appliquée. – Les groupes qui correspondent à la clause HAVING sont affichés. Utilisez la clause HAVING pour restreindre les groupes – Les lignes sont regroupées. – La fonction de groupe est appliquée. – Les groupes qui correspondent à la clause HAVING sont affichés. SELECTcolumn, group_function FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [HAVINGgroup_condition] [ORDER BYcolumn];

22 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

23 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

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

25 5-25 Copyright Oracle Corporation, 1998. Tous droits réservés. Résumé SELECTcolumn, group_function FROMtable [WHEREcondition] [GROUP BYgroup_by_expression] [HAVINGgroup_condition] [ORDER BYcolumn];


Télécharger ppt "Copyright Oracle Corporation, 1998. Tous droits réservés. 5 Regrouper les Données avec les Fonctions de Groupe."

Présentations similaires


Annonces Google