Samedi 18 juin 2011 6 18 /06 /Juin /2011 14:16

 

Commande Oracle SQL GROUP BY clause.

Comment regrouper des lignes de ma table avec la clause de regroupement GROUP BY ?.

La clause GROUP BY permet de regrouper (agrégats) des enregistrements selon la valeur d'une expression.

 

SYNTAXE ORDRE SELECT AVEC LA CLAUSE GROUP BY

 
SELECT 
   [ { { DISTINCT | UNIQUE }  | ALL  } ]
   [ schema. ]
   { table | view | materialized view } .* | column | expr [ [ AS ] c_alias ]
FROM { table1 [, table2 ]...}
[ WHERE conditions ]
[ GROUP BY expr1 [, expr2]...]

 

Quelques FONCTIONS de GROUPE utilisées avec GROUP BY.

FONCTION de GROUPE

Descriptions 

AVG([DISTINCT | ALL] expr) Moyenne de expr
COUNT({* | [DISTINCT | ALL] expr}) Nombre de lignes
MAX([DISTINCT | ALL] expr) Maximum de expr
MIN([DISTINCT | ALL] expr) Minimum de expr
SUM([DISTINCT | ALL] expr) Somme de expr

 

Moyenne des salaires par Dept et Job.

 
 
SQL> SELECT deptno, job, AVG(sal) AS "Moyenne Salaire"
  2  FROM emp
  3  GROUP BY deptno, job;

    DEPTNO JOB       Moyenne Salaire
---------- --------- ---------------
        20 CLERK                 950
        30 SALESMAN             1400
        20 MANAGER              2975
        30 CLERK                 950
        10 PRESIDENT            5000
        30 MANAGER              2850
        10 CLERK                1300
        10 MANAGER              2450
        20 ANALYST              3000

9 rows selected.

 

Moyenne des salaires par Dept et Job lorsque JOB= CLERK uniquement.

 
 
SQL> SELECT deptno, job, AVG(sal) AS "Moyenne Salaire"
  2  FROM emp
  3  WHERE job = 'CLERK'
  4  GROUP BY deptno, job;

    DEPTNO JOB       Moyenne Salaire
---------- --------- ---------------
        20 CLERK                 950
        30 CLERK                 950
        10 CLERK                1300

SQL>

 

Fonction de groupe AVG et COUNT sans la clause GROUP BY.

 
 
SQL> SELECT AVG(sal) AS "Moyenne Salaire",
  2         COUNT(empno) AS "Nbre d'employes",
  3         COUNT(DISTINCT(deptno)) AS "Dept Distinct",
  4  FROM emp
  5  WHERE job = 'CLERK';

Moyenne Salaire Nbre d'employes Dept Distinct
--------------- --------------- -------------
         1037.5               4             3

SQL>

 

Fonction de groupe AVG et COUNT AVEC la clause GROUP BY.

 
 
SQL> SELECT job,
  2         AVG(sal) AS "Moyenne Salaire",
  3         COUNT(empno) AS "Nbre d'employes",
  4         COUNT(DISTINCT(deptno)) AS "Dept Distinct"
  5  FROM emp
  6  GROUP BY job;

JOB       Moyenne Salaire Nbre d'employes Dept Distinct
--------- --------------- --------------- -------------
ANALYST              3000               2             1
CLERK              1037.5               4             3
MANAGER           2758.33               3             3
PRESIDENT            5000               1             1
SALESMAN             1400               4             1

SQL>

 

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Update conditionnées de Tables avec MERGE INTO
• Oracle SQL GROUP BY ROLLUP
• Oracle SQL GROUP BY CUBE
• Instruction SQL SELECT FROM WHERE
Par Daniel Roesch - Publié dans : COMMANDES SQL DML-LMD
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

Rechercher Articles Oracle SQL sur ce Site.

Loading

À lire aussi…

Download PDF Oracle

Rechercher sur le site

Oracle 10G - DBA -

Syndication

  • Flux RSS des articles
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés