A cláusula GROUP BY |
A cláusula GROUP BY é usada para agrupar (ou agregar) as linhas da tabela segundo um critério escolhido pelo utilizador, podendo depois ser aplicada uma função de grupo a cada um dos grupos. Usando GROUP BY não é possível seleccionar linhas individuais.
O exemplo abaixo determina o salário médio de cada função (JOB):
select job, avg(sal) from emp group by job; |
JOB AVG(SAL) --------- ---------------------- CLERK 1037,5 SALESMAN 1400 PRESIDENT 5000 MANAGER 2758,333333333333333333333333333333333333 ANALYST 3000 5 rows selected |
É possível contar o número de linhas que cada grupo contém. Por exemplo, quantas pessoas há em cada função?
select job, count(*) from emp group by job; |
JOB COUNT(*) --------- ---------------------- CLERK 4 SALESMAN 4 PRESIDENT 1 MANAGER 3 ANALYST 2 5 rows selected |
As duas consultas anteriores podem ser fundidas. Nesse caso pretendemos saber qual o salário médio de cada função e quantas pessoas nela trabalham:
select job, avg(sal), count(*) from emp group by job; |
JOB AVG(SAL) COUNT(*) --------- ----------------------------------------- ---------------------- CLERK 1037,5 4 SALESMAN 1400 4 PRESIDENT 5000 1 MANAGER 2758,333333333333333333333333333333333333 3 ANALYST 3000 2 5 rows selected |
Utilizando a cláusula WHERE podem-se excluir linhas antes de as dividir em grupos. Por exemplo apresentar o salário médio de cada função (job) excluindo os MANAGER:
select job, avg(sal), count(*) from emp where job != 'MANAGER' group by job; |
JOB AVG(SAL) COUNT(*) --------- ---------------------- ---------------------- CLERK 1037,5 4 SALESMAN 1400 4 PRESIDENT 5000 1 ANALYST 3000 2 4 rows selected |
Realizado por Turtle Learning ®. Última alteração em 2011-02-26