Engenheiro
Actividade Formativa nº 4 - Caso dos Bancos - comando Select SQL
1) Comparação de conjuntos: clausulas some/any, all
a) Listar os n_balcão que têm activos maiores que algum balcão localizado em Setúbal
select n_balcao from balcao where activo > some (select activo from balcao where cidade=’Setubal’);
NOTA: Aqui vão também aparecer todos os n_balcão que pertencem a Setúbal excepto o que tem o activo mais baixo. Todos eles obedecem à condicão pedida.
b) Listar os balcões activos maiores que todos os activos localizados em Setúbal
select n_balcao from balcao where activo > all (select activo from balcao where cidade=’Setubal’);
2- Teste de relações vazias: clausula exists
a) Listar todos os clientes que tenham empréstimos e depósitos no balcão 10 (intersecção)
select nome_cliente from deposito where n_balcao=10 and exists (select nome_cliente from emprestimo where n_balcao=10 and deposito.n_balcao = emprestimo.n_balcao);
ou
select DEP.nome_cliente from deposito as DEP where DEP.n_balcao=10 and exists ( select nome_cliente from emprestimo where n_balcao = 10 and nome_cliente=DEP.nome_cliente);
ou
select DEP.nome_cliente from deposito as DEP where DEP.n_balcao=10 and exists ( select nome_cliente from emprestimo where n_balcao = DEP.n_balcao and nome_cliente=DEP.nome_cliente);
b) Listar os clientes que tenham conta no balcão 10 mas não tenham empréstimo (diferença)
select DEP.nome_cliente from deposito as DEP where DEP.n_balcao=10 and not exists ( select nome_cliente from emprestimo where n_balcao = DEP.n_balcao and nome_cliente=DEP.nome_cliente);
ou
select EMP.nome_cliente from emprestimo as EMP where EMP.n_balcao <> 10 and exists (select nome_cliente from deposito where n_balcao = EMP.n_balcao and nome_cliente = EMP.nome_cliente);
c) Listar os clientes que tenham conta em todos