Aluno: Lucas Antunes Tambara
Matrícula: 2710246
E-mail: ltambara@inf.ufsm.br
Disciplina: Fundamentos de Bancos de Dados (ELC119)
Semestre: 2/2008
.:: Consultas em SQL ::.
Enunciados: link.
Resolução:
-Alterar o salário do empregado de código 3 para 28000.
UPDATE empregado SET salario=28000 WHERE codemp=3;
-Obter nomes de empregados com salario > 30000.
SELECT nome FROM empregado WHERE salario>30000;
-Obter nomes de empregados que trabalham no projeto 'Transmogrifador'.
SELECT nome FROM empregado JOIN (SELECT codemp FROM trabalhaem JOIN projeto ON projeto.titulo='Transmogrifador' AND projeto.codproj=trabalhaem.codproj) AS j ON empregado.codemp=j.codemp;
-Obter nomes e endereços de todos os empregados que trabalham no departamento de 'Pesquisa'.
SELECT empregado.nome, endereco FROM empregado JOIN departamento ON departamento.nome='Pesquisa' AND departamento.coddepto=empregado.coddepto;
-Obter nomes de empregados que começam com a letra 'A'. Dica: use LIKE.
SELECT nome FROM empregado WHERE nome LIKE 'A%';
-Obter os nomes e datas de nascimento dos empregados que fazem aniversário no mês de outubro.
SELECT nome, datanasc FROM empregado WHERE datanasc LIKE '%-10-%';
-Obter os nomes dos empregados nascidos entre as datas 1950-01-01 e 1970-01-01. Dica: use BETWEEN.
SELECT nome FROM empregado WHERE datanasc BETWEEN '1950-01-01' AND '1970-01-01';
-Listar os títulos de projetos em ordem alfabética. Dica: use ORDER BY.
SELECT titulo FROM projeto ORDER BY titulo;
-Listar nomes e horas trabalhadas por empregados no projeto de código 3, em ordem decrescente de horas trabalhadas.
SELECT nome, horas FROM trabalhaem JOIN empregado ON empregado.codemp=trabalhaem.codemp WHERE codproj=3 ORDER BY horas DESC;
-Obter códigos de empregados que trabalham mais de 10 horas em algum projeto. O resultado da consulta não deve ter repetições de códigos de empregados.
SELECT DISTINCT codemp FROM trabalhaem WHERE horas>10;
-Obter a quantidade de empregados pertencentes ao departamento 4.
SELECT COUNT(coddepto) FROM empregado WHERE coddepto=4;
-Obter, a partir da tabela trabalhaEm, os números mínimo, máximo e médio de horas trabalhadas por empregados em cada projeto. O resultado deve possuir 4 colunas nomeadas: projeto, minimo, maximo e media.
SELECT MIN(horas) AS minimo, MAX(horas) AS maximo, AVG(horas) AS media FROM trabalhaem;
-Obter os códigos de projetos cuja média de horas trabalhadas seja maior que 20.
SELECT codproj FROM trabalhaem GROUP BY codproj HAVING AVG(horas)>20;
-Obter os nomes de projetos correspondentes à consulta anterior. Usar a consulta anterior como uma consulta aninhada à nova consulta.
SELECT projeto.titulo FROM projeto JOIN (SELECT trabalhaem.codproj FROM trabalhaem GROUP BY trabalhaem.codproj HAVING AVG(trabalhaem.horas)>20) AS j ON projeto.codproj=j.codproj