Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
18 juin 2011 6 18 /06 /juin /2011 14:16

 

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

Partager cet article

Repost 0
Published by Daniel Roesch - dans OPÉRATEURS SQL
commenter cet article

commentaires