1. Valor: 1,0 (Hum ponto) - (ESAEX 2012) Considere a tabela A abaixo, seus campos CLIENTE e VALOR, e a consulta em linguagem SQL:
A CLIENTE VALOR 1 4 1 2 2 3 2 4 2 5 3 6 3 8
SELECT MAX(A.VALOR) FROM A GROUP BY A.CLIENTE HAVING COUNT (*) < 3 AND AVG (A.VALOR) < 7 Teremos como retorno da consulta SQL:
(A) 4 e 2 (B) 6 e 8 (C) 8 (D) 4 (E) 3, 4 e 5
2. Valor: 1,0 (Hum ponto) - (ESAEX 2010) Considere as tabelas A e B e a consulta SQL abaixo:
A CODIGO VALOR 1 2 2 3 4 4 5 5 B CODIGO VALOR 1 1 1 2 2 3 2 4 3 5 SELECT SUM (A.VALOR) FROM A WHERE A.CODIGO IN (SELECT B.CODIGO FROM B) OR EXISTS (SELECT * FROM B WHERE B.VALOR = A.VALOR) Teremos como retorno da consulta SQL o nmero: A) 0 B) 5 C) 7 D) 14 E) 21
Instituto Federal de Educao, Cincia e Cultura da Bahia Curso Superior de Tecnologia em Anlise de Sistemas Disciplina: Banco de Dados I Prof. Grinaldo Lopes de Oliveira
2 PARTE 2 SE DIVERTINDO COM SQL
3. Valor: 1 (hum) pontos. Com base no esquema da figura e nas especificaes abaixo crie a estrutura do esquema de banco de dados. Todos os campos OID so as chaves primarias das tabelas. Todos os relacionamentos devem possuir integridade referencial.
4. Valor 1 (hum) ponto. Crie os inserts para os seguintes registros:
TABELA: CLIENTE COD_CLIENTE NOME_CLIENTE 1 BARNEY 2 FRED 3 TOM 4 JERRY
Instituto Federal de Educao, Cincia e Cultura da Bahia Curso Superior de Tecnologia em Anlise de Sistemas Disciplina: Banco de Dados I Prof. Grinaldo Lopes de Oliveira
5. Valor 6 (seis) pontos. Construa as consultas a seguir:
a) Faa uma alterao na tabela ARTIGO incrementado em 1 UNIDADE o VALOR de seus itens. b) Selecione o nome dos CLIENTES e o total gasto em cada PEDIDO. c) Selecione a lista de ARTIGOS e sua quantidade vendida. d) Selecione o CLIENTE que no fez PEDIDOS cujos ARTIGOS tenham a letra F e no tenham sido vendidos no ms de maio de 2013. e) Selecione os ARTIGOS mais vendidos nos meses de maio a julho de 2013. f) Apague da LISTA a linha cujo PEDIDO e ARTIGO tenha vendido menos que 20 reais.
SCRIPT
create table cliente( cod_cliente int not null primary key, nome_cliente varchar(30) not null );
create table pedido( cod_pedido int not null primary key, cod_cliente int not null, data_pedido date not null, constraint cod_cliente_fk foreign key (cod_cliente) references cliente );
create table artigo( cod_artigo int not null primary key, nome_artigo varchar(30), valor int );
create table lista( cod_pedido int not null, cod_artigo int not null,
Instituto Federal de Educao, Cincia e Cultura da Bahia Curso Superior de Tecnologia em Anlise de Sistemas Disciplina: Banco de Dados I Prof. Grinaldo Lopes de Oliveira
--B select c.nome_cliente, p.cod_pedido, sum (a.valor * l.quantidade) as valor_gasto from cliente as c inner join pedido as p on (c.cod_cliente = p.cod_cliente) inner join lista as l on (p.cod_pedido = l.cod_pedido) inner join artigo as a on (l.cod_artigo = a.cod_artigo) group by c.nome_cliente, p.cod_pedido order by c.nome_cliente, p.cod_pedido
--C select a.nome_artigo, SUM(l.quantidade) from artigo as a inner join lista as l on (a.cod_artigo = l.cod_artigo) inner join pedido as p on (l.cod_pedido = p.cod_pedido) group by a.nome_artigo;
--D
Instituto Federal de Educao, Cincia e Cultura da Bahia Curso Superior de Tecnologia em Anlise de Sistemas Disciplina: Banco de Dados I Prof. Grinaldo Lopes de Oliveira
5 select cl.nome_cliente from cliente as cl where cl.nome_cliente not in ( select c.nome_cliente from cliente as c inner join pedido as p on (c.cod_cliente = p.cod_cliente) inner join lista as l on (p.cod_pedido = l.cod_pedido) inner join artigo as a on (l.cod_artigo = a.cod_artigo) where a.nome_artigo like '%F%' and p.data_pedido not between '2013-05-01' and '2013-05-31' )
/* OU */
select cl.nome_cliente from cliente as cl where not exists ( select c.nome_cliente from cliente as c inner join pedido as p on (c.cod_cliente = p.cod_cliente) inner join lista as l on (p.cod_pedido = l.cod_pedido) inner join artigo as a on (l.cod_artigo = a.cod_artigo) where a.nome_artigo like '%F%' and p.data_pedido not between '2013-05-01' and '2013-05-31' and cl.nome_cliente = c.nome_cliente )
--E
select a.nome_artigo from artigo as a inner join lista as l on (a.cod_artigo = l.cod_artigo) inner join pedido as p on (p.cod_pedido = l.cod_pedido) where p.data_pedido between '2013-05-01' and '2013-07-31' group by a.nome_artigo having MAX(l.quantidade) in ( select MAX(l.quantidade) from artigo as a inner join lista as l on (a.cod_artigo = l.cod_artigo)
Instituto Federal de Educao, Cincia e Cultura da Bahia Curso Superior de Tecnologia em Anlise de Sistemas Disciplina: Banco de Dados I Prof. Grinaldo Lopes de Oliveira
6 inner join pedido as p on (p.cod_pedido = l.cod_pedido) where p.data_pedido between '2013-05-01' and '2013-07-31' group by a.nome_artigo order by MAX desc limit 1)
--F begin transaction delete from lista as ln where exists( select * from lista as l inner join pedido as p on (p.cod_pedido = l.cod_pedido) inner join artigo as a on (a.cod_artigo = l.cod_artigo) where ln.cod_pedido = l.cod_pedido and ln.cod_artigo = l.cod_artigo group by l.cod_pedido, l.cod_artigo, p.cod_pedido, a.cod_artigo having (a.valor * l.quantidade) < 20 ) rollback