04 DML Select Ate Duas Tbl
Banco de Dados I
SELECT
FASE I
PARTE II
• Consultas com Group By
• Consultas com duas tabelas
Leonardo Arruda Ribas - 1
GROUP BY
Group By é a instrução do comando SELECT que permite a consolidação dos registros, fazendo a síntese dos mesmos por um conjunto de campos.
A funcionalidade do GROUP BY equivale a das informações de subtotais usadas em relatórios. Ao se fazer o agrupamento por um determinado campo de quebra, perde-se a informação detalhada em nível de registros.
Novas informações são geradas a partir da totalização dos registros. Os campos da expressão GROUP BY devem sempre fazer parte da expressão SELECT.
Quando é utilizado o GROUP BY obrigatoriamente os campos dessa instrução devem existir na instrução
SELECT.
a)Calcular o total de funcionários por código de departamento.
Nomes das colunas: CODDEPTO, TOTAL
SELECT
coddepto,
COUNT(*) AS TOTAL
FROM
funcionario
GROUP BY coddepto;
b)Calcular a média de salários por código de departamento, exceto do departamento de código 2.
Nomes das colunas: CODDEPTO, MÉDIA
SELECT
coddepto,
AVG(salario_base) AS MÉDIA
FROM
funcionario
WHERE
coddepto <> 2
GROUP BY coddepto;
Leonardo Arruda Ribas - 2
c)Calcular a diferença entre o total de valor pago depois do aumento (20%) e o total pago antes do aumento, agrupado por código de departamento.
Nome da coluna: CodDepto, Total_Depois, Total_Antes, Diferença
SELECT
coddepto,
SUM(salario_base) AS Total_Antes,
SUM(salario_base * 1.2) AS Total_Depois,
SUM(salario_base * 1.2) - SUM(salario_base) AS Diferença
FROM
funcionario
GROUP BY coddepto;
d)Calcular o total de salários por código de departamento, somente dos funcionários que foram admitidos no ano de 2006.
Nomes das colunas: CODDEPTO, TOTAL
SELECT
coddepto,
SUM(salario_base) AS TOTAL
FROM
funcionario
WHERE
DATEPART(YYYY,dt_admissao) = 2006
GROUP BY coddepto;
Leonardo Arruda Ribas - 3
UTILIZANDO DUAS TABELAS
Para os exemplos a partir deste ponto, vamos considerar a tabela FUNCIONARIO e