Funcionarios (Codigo, PrimeiroNome, SegundoNome, UltimoNome, DataNasci, CPF, RG, Endereco, CEP, Cidade, Fone, CodigoDepartamento, Funcao, Salario) Departamentos (Codigo, Nome, Localizacao, CodigoFuncionarioGerente) 1. Liste os departamentos dos funcionários que têm a função de supervisor 2. Liste a quantidade de funcionários desta empresa 3. Liste o salário médio pago pela empresa 4. Liste o menor salário pago pela empresa em cada departamento 5. Liste o nome completo de todos os funcionários que não tenham segundo nome 6. Liste o nome do departamento e do funcionário ordenados por departamento e funcionário 7. Liste os nomes dos funcionários que moram em Recife e que exerçam a função de Telefonista 8. Liste os nomes dos funcionários que trabalham no departamento Pessoal 9. Liste o nome e o departamento de todos os funcionários que ganham mais do que algum gerente
Soluções para a tarefa
Exercício SQL:
Para listar os departamentos correspondentes aos funcionários que têm como função supervisor temos:
SELECT D.Nome, F.PrimeiroNome
FROM Departamentos D JOIN Funcionarios F
ON D.Codigo = F.CodigoDepartamento
WHERE F.Funcao = ‘Supervisor’ ORDER BY D.Nome
Para listar a quantidade de funcionários da empresa temos:
SELECT COUNT(*) AS TotalFuncionarios
FROM Funcionarios
A listagem do salário médio pago pela empresa:
SELECT AVG(Salario) AS Media FROM Funcionarios
Para listar o menor salário pago pela empresa em cada departamento:
SELECT D.Nome, MIN(F.Salario)
FROM Funcionarios F JOIN Departamentos D
ON F.CodigoDepartamento = D.Codigo
GROUP BY D.Nome
Para listar o nome completo de todos os funcionários sem segundo nome temos:
SELECT PrimeiroNome, SegundoNome, UltimoNome
FROM Funcionarios
WHERE SegundoNome IS NULL ORDER BY PrimeiroNome, UltimoNome
Para listar o nome do departamento e funcionário, ordenados por departamento e funcionário:
SELECT D.Nome, F.PrimeiroNome
FROM Departamentos D JOIN Funcionarios F ON D.Codigo = F.CodigoDepartamento
ORDER BY D.Nome, F.PrimeiroNome
Para listar todos os nomes dos funcionários que moram em Recife e tenham como função telefonista:
SELECT PrimeiroNome
FROM Funcionarios
WHERE Cidade = ‘Recife’ AND Funcao = ‘Telefonista’
Para listar os nomes dos funcionários que trabalham no departamento de pessoal:
SELECT PrimeiroNome
FROM Funcionarios
WHERE CodigoDepartamento =
(SELECT Codigo
FROM Departamentos WHERE Nome = ‘Pessoal’)
Por último, a listagem com o nome e o departamento de todos os funcionários que ganham mais do que algum gerente:
SELECT F.PrimeiroNome, D.Nome
FROM Funcionarios F JOIN Departamentos D ON F.CodigoDepartamento = D.Codigo WHERE F.Salario > SOME (
SELECT Salario FROM Funcionarios WHERE Codigo IN (
SELECT CodigoFuncionarioGerente FROM Departamentos ) );