Baixe o app para aproveitar ainda mais
Prévia do material em texto
Secção Escreva os comandos SQL que traduzam as seguintes consultas: 1. Lista das cidades onde trabalhem engenheiros. 3 Álvaro 50 Administrador 2500 10 4 António 10 Engenheiro 3 1450 20 5 Susana 20 Administrador 2750 30 6 Carlos 60 Vendedor 4 1000 50 NumSec Nome Cidade 10 Fabrico Porto 20 Comercial Porto 30 Marketing Lisboa 40 Planeamento Guimarães 50 Administração Porto 60 Informática Braga 70 Recursos Humanos Guimarães Bases de Dados I Bases de Dados Exercícios Exemplo Engenharia Informática/TPSI Exercício 1 (7 valores:a-0,25v;b-0,5v;c-0,75v;d-1,5v;e-1,5v;f-1,25v;g-1,25v) Considere o seguinte modelo de dados: Empregado={NumEmp, Nome, Seccao- - - - - - - - - , Posto, Chefe, Salario, Comissao} Secção={NumSec, Nome, Cidade} Considere que o atributo Empregado.Seccao referencia o atributo Seccao.NumSEC Comissao é uma percentagem do Salario. Como auxiliar, considere as seguintes tabelas: Empregado NumEmp Nome Seccao Posto Chefe Salario Comissao(%) 1 Ana 10 Programador 3 3000 10 2 Nuno 70 Engenheiro 1 1500 40 1 de 3 2. Lista das secções que tenham trabalhadores cujo nome começa com a letra A. Bases de Dados I 3. Lista dos empregados que trabalham na cidade do Porto e que têm como chefe o empregado “Álvaro”. 4. Lista dos empregados que são chefes de mais do que um empregado e que trabalhem numa cidade onde exista mais do que uma secção. 5. Lista dos empregados cujo chefe é o mais bem pago dos empregados que não têm chefe. 6. Listagem dos engenheiros que tenham um salário superior a todos aqueles que não o são. 7. Listagem dos administradores que tenham um salário superior ao dobro da média de todos os funcionários cuja remuneração (salário+comissão) seja superior em 30% ao salário auferido. 8. Listagem das cidades que tenham secções cujo valor total de remunerações (salários+comissões) seja superior a 1/6 do total das remunerações pagas. 9. Quais os empregados que ganham mais (salário+comissão) do que a média remuner- atória da secção onde não trabalham. 10. Quais os empregados que ganham mais (salário+comissão) do que a média remuner- atória da secção onde trabalham. 11. Lista dos empregados cujos salários ultrapassem o valor médio de remuneração (salário+comissão) da secção onde esse valor seja mais elevado 12. Qual a secção onde trabalha o empregado que chefia mais empregados. 13. Lista dos Engenheiros que chefiem empregados que trabalhem em secções cuja sede seja numa cidade onde só ela existe. 14. Actualize os salários dos empregados das secções sediadas no Porto em 5% e em 3% o salário daqueles que trabalham nas secções da cidade de Guimarães. 15. Insira um novo registo na tabela dos empregados de um novo programador, cujo salário será igual a 4 vezes a maior comissão paga aos programadores da secção para onde vai trabalhar. 16. Actualize os salários dos empregados da secção de Informática, de forma a que passe a ser igual a pelo menos 50% do salário médio dos trabalhadores da secção de Fabrico. 17. Insira um novo registo na tabela dos empregados de um novo engenheiro, cujo salário será igual a 0,8 vezes a remuneração (salário+comissão) do engenheiro mais bem pago da secção para onde vai trabalhar. Caso a secção não possua engenheiros, o salário será igual a 1,1 vezes a remuneração do engenheiro mais bem pago da empresa. (Nota: para exemplo utilize uma secção à sua escolha, mas o comando deverá funcionar independentemente da secção escolhida). 18. Transfira da secção com maior valor total de remunerações o funcionário com salário mais elevado, para a secção com menor valor total de remunerações. 19. Crie um novo atributo (Remuneração) e coloque para todos os funcionários o valor tal como foi definido anteriormente. 20. Elimine todos os funcionários que aufiram uma remuneração superior à remuner- ação média da secção onde trabalham. Exercício 2 Seja o esquema relacional da base de dados de uma cadeia de supermercados. Create table Loja(CodLoja int primary key, NomeLoja varchar(50), EnderecoLoja varchar(100), Cidade varchar(50), Distrito varchar(50)); Create table TipoProduto(CodTipoProduto int primary key, Descricao varchar(255)); Create table Produto(CodProduto int primary key, NomeProduto varchar(100), UnidadeMedida varchar(10), PrecoUnitario decimal(10,2), CodTipoProduto int, foreign key(CodTipoProduto) references TipoProduto(CodTipoProduto)); Create table Stock(CodProduto int, CodLoja int, QuantidadeArmazenada decimal(10,2) Primary key(CodProduto,CodLoja), foreign key(CodLoja) references Loja(CodLoja), foreign key(CodProduto) references Produto(CodProduto)); Create table Venda(NumVenda int primary key, CodLoja int, NomeCliente varchar(200), 2 de 3 Bases de Dados I DataVenda date, foreign key(CodLoja) references Loja(CodLoja)); Create table ProdutoVendido (NumVenda int, CodProduto int, QuantidadeAdquirida int, primary key(NumVenda,CodProduto),foreign key(NumVenda) references Venda(NumVenda), foreign key(CodProduto) references Produto(CodProduto)); Escreva os comandos SQL necessários para responder às seguintes questões: 1. Quais as três lojas com maiores valores de vendas nos meses de outubro e novembro deste ano? 2. Quais as lojas que ficam no distrito com menor número de lojas? 3. Quais os códigos e nomes das lojas que são do distrito de Lisboa e que não tenham vendido mais do que 3 unidades do produto “XPTO”. 4. Quanto vendeu a cadeia de supermercados entre 20/01/2001 e 16/07/2002 nos distritos em que existem pelo menos 3 cidades com lojas da cadeia? 5. Actualização de 3% no PrecoUnitario, para todos os produtos cujo PrecoUnitario seja inferior a 1/2 do preço médio. 6. Um comando (ou conjunto de comandos) que permita salvaguardar os dados das tabelas Loja, Venda, Produto e ProdutoVendido, numa única tabela. 3 de 3 Bases de Dados I Bases de Dados Exercício 1 (7 valores:a-0,25v;b-0,5v;c-0,75v;d-1,5v;e-1,5v;f-1,25v;g-1,25v) Exercício 2
Compartilhar