.:: ELC119 - Fundamentos de Bancos de Dados ::.

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