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, Tous droits réservés. 5 Regrouper les Données avec les Fonctions de Groupe

2 5-2 Copyright Oracle Corporation, 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, 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 MAX(SAL)

4 5-4 Copyright Oracle Corporation, 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, 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, Tous droits réservés. Fonctions AVG et SUM AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) 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, 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 DEC JAN-83

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

9 5-9 Copyright Oracle Corporation, 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)

10 5-10 Copyright Oracle Corporation, 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)

11 5-11 Copyright Oracle Corporation, 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))

12 5-12 Copyright Oracle Corporation, Tous droits réservés. Création de Groupes de Données EMP "salaire moyen pour chaque département de la table EMP" DEPTNO SAL DEPTNO AVG(SAL)

13 5-13 Copyright Oracle Corporation, 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, 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)

15 5-15 Copyright Oracle Corporation, 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)

16 5-16 Copyright Oracle Corporation, 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 MANAGER PRESIDENT CLERK CLERK CLERK ANALYST MANAGER SALESMAN MANAGER SALESMAN CLERK SALESMAN SALESMAN 1250 JOB SUM(SAL) CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 6000 CLERK 1900 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 5600 DEPTNO

17 5-17 Copyright Oracle Corporation, 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) CLERK MANAGER PRESIDENT ANALYST CLERK rows selected.

18 5-18 Copyright Oracle Corporation, 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, 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) > GROUP BY deptno; SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 WHERE AVG(sal) > 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, Tous droits réservés. Exclusion de Groupes "salaire maximum supérieur à $2900 dans chaque département" EMP DEPTNO SAL DEPTNO MAX(SAL)

21 5-21 Copyright Oracle Corporation, 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, 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)

23 5-23 Copyright Oracle Corporation, 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)> ORDER BY SUM(sal); JOB PAYROLL ANALYST 6000 MANAGER 8275

24 5-24 Copyright Oracle Corporation, 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)) Afficher le salaire moyen maximum.

25 5-25 Copyright Oracle Corporation, 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