Você está na página 1de 6

FACULDADE DE TECNOLOGIA

SENAC

Grupo 01
Considere o seguinte esquema relacional e responda às questões apresentando o respectivo SQL1:
Cliente( cod_cliente, cliente, profissao, localidade)
Agencia( cod_agencia, agencia, localidade)
Conta( num_conta, tipo_conta, cod_cliente, cod_agencia, saldo)
Emprestimo( num_emprestimo, cod_cliente, cod_agencia, valor)

1. Quais os clientes (cod_cliente e cliente) deste


Banco? R.:
SELECT cod_cliente, cliente
FROM Cliente

2. Quais os clientes que residem em


Braga? R.:
SELECT cod_cliente, cliente
FROM Cliente
WHERE localidade LIKE “Braga”

3. Quais os clientes (cod_cliente) com contas na agência cod_agencia = ‘123’?


R.:
SELECT cod_cliente
FROM Conta
WHERE cod_agencia=’123’

4. Quais os clientes que residem em localidades onde existem


agências? R.:
SELECT cod_cliente
FROM Cliente,
Agencia
WHERE Cliente.localidade = Agencia.localidade

5. Quais os clientes que residem na mesma localidade das agências onde possuem
contas? R.:
SELECT cod_cliente
FROM Cliente, Agencia,Conta
WHERE Cliente.localidade = Agencia.localidade AND Cliente.cod_cliente
= Conta.cod_cliente AND Conta.cod_agencia = Agencia.cod_agencia

6. Quais os clientes com empréstimos de valor superior a 2.500€


? R.:
SELECT cod_cliente
FROM Emprestimo
WHERE valor > 2
500

7. Quais os nomes dos clientes com a mesma profissão que o cliente com cod_cliente =
‘1234’? R.:
SELECT cliente
FROM Cliente
WHERE profissao = (SELECT profissao FROM Cliente
WHERE cod_cliente=’1234’)

Classified as Internal
FACULDADE DE TECNOLOGIA
SENAC

8. Listar as contas (num_conta, saldo) da agência cujo cod_agencia = ‘123’, por ordem decrescente do seu
valor de saldo.
R.:
SELECT num_conta, saldo
FROM Conta
WHERE cod_agencia=’123’
ORDER BY saldo

9. Quantas contas existem em todas as agências do


Banco? R.:
SELECT COUNT(*)
FROM Conta

10. Quantos clientes possuem contas na agência cujo cod_agencia = ‘123’?


R.:
SELECT COUNT(*)
FROM Conta
WHERE cod_agencia=’123’

11. Listar o número de contas existentes em cada


agência. R.:
SELECT cod_agencia, COUNT(*) AS [Numero de
Contas] FROM Conta
GROUP BY cod_agencia

12. Quais os clientes cuja profissão é


desconhecida? R.:
SELECT cod_cliente
FROM Cliente
WHERE profissao IS BLANK

13. Para cada agência (cod_agencia) com menos de 1000 contas, listar os valores máximo e mínimo
dos saldos dessas contas, assim como o saldo médio.
R.:
SELECT cod_agencia, MAX(saldo) AS [Maior Saldo], MIN(saldo)AS [Menor
Saldo], AVG(saldo)AS [Saldo Médio]
FROM Conta
GROUP BY cod_agencia
HAVING COUNT(*) <
1000

14. Quais os clientes (cod_cliente e cliente) da agência cod_agencia = ‘123’? (solução obtida pressupondo
que um cliente pode ter um empréstimo sem ter uma conta, pensamento errado na prática, contudo se
assim não for esta solução é igual à questão 3 deste mesmo exercicio)
R.:
SELECT cod_cliente, cliente
FROM Cliente, Emprestimo,
Conta
WHERE (Cliente.cod_cliente= Emprestimo.cod_cliente AND
Emprestimo.cod_agencia=’123’) OR (Cliente.cod_cliente= Conta.cod_cliente
AND Conta.cod_agencia=’123’)

Classified as Internal
FACULDADE DE TECNOLOGIA
SENAC
15. Quais os clientes (cod_cliente e cliente) que são, simultaneamente, depositantes e devedores na
agência cujo cod_agencia = ‘123’?
R.:
SELECT cod_cliente, cliente
FROM Cliente, Emprestimo,
Conta
WHERE Cliente.cod_cliente= Emprestimo.cod_cliente AND
Cliente.cod_cliente= Conta.cod_cliente AND Emprestimo.cod_agencia=’123’
AND Emprestimo.cod_agencia =Conta.cod_agencia

16. Quais os clientes (cod_cliente e cliente) da agência com cod_agencia = ‘123’que apenas são
depositantes? R.:
SELECT cod_cliente, cliente
FROM Cliente, Emprestimo,
Conta
WHERE Cliente.cod_cliente= Emprestimo.cod_cliente AND
Cliente.cod_cliente= Conta.cod_cliente AND
Emprestimo.cod_cliente<> Conta.cod_cliente AND
Emprestimo.cod_agencia=’123’ AND Emprestimo.cod_agencia
=Conta.cod_agencia

17. Quais os clientes (cod_cliente e cliente) com, pelo menos, um empréstimo no


banco? R.:
SELECT cod_cliente, cliente
FROM Cliente, Emprestimo
WHERE Cliente.cod_cliente= Emprestimo.cod_cliente
GROUP BY cod_cliente, cliente
HAVING COUNT(*)>=1

18. Quais as agências (cod_agencia, agencia) com depositantes residentes em


Lisboa? R.:
SELECT cod_agencia, agencia
FROM Cliente, Agencia,Conta
WHERE Cliente.cod_cliente= Conta.cod_cliente AND
Agencia.cod_agencia=Conta.cod_agencia AND Cliente.localidade LIKE
“Lisboa”

19. Quais os clientes cujo saldo total das suas contas é superior ao valor de qualquer empréstimo
contraído neste banco?
R.:
SELECT cod_cliente, cliente
FROM Cliente, Conta,
Emprestimo
WHERE Cliente.cod_cliente= Conta.cod_cliente
GROUP BY cod_cliente, cliente
HAVING SUM(Conta.saldo)>(SELECT MAX(Emprestimo.valor) FROM
Emprestimo)

Classified as Internal
FACULDADE DE TECNOLOGIA
SENAC

Grupo 02

Considere o seguinte esquema relacional e resolva em SQL as questões propostas:

Pessoa ( Código Interno , Nome , Morada , Tipo )


Cliente ( Código Interno , Actividade )
Empregado ( Código Interno , Número Sequencial , Vencimento Mensal,
Responsável , Sigla , Data de Admissão )
Departamento ( Sigla , Designação , Localização , Chefe, Data de Posse )
Secção ( Sigla , Número )
Modelo ( Código , Cor )
Produz ( Sigla , Número , Código , Preço )

1. Quais os vencimentos dos funcionários que trabalham no Departamento Comercial (Sigla: DC)
? R.:
SELECT [Vencimento Mensal]
FROM Empregado
WHERE Sigla LIKE ‘DC’

2. Quais as secções que a empresa


possui? R.:
SELECT Sigla, Número
FROM Secção

3. Quais as secções (Número e Sigla) do Departamento Contabilidade


(DC)? R.:
SELECT Sigla, Número
FROM Secção
WHERE Sigla=’DC’

4. Quais os empregados que entraram ao serviço da empresa há menos de 10


anos? R.:
SELECT Código Interno
FROM Empregado
WHERE ( YEAR(TODAY())-YEAR([Data de Admissão]) ) <10

5. Seleccione os empregados do DOE e do DC cujo salário é superior a 900


€? R.:
SELECT Código Interno
FROM Empregado
WHERE (Sigla = ‘DC’ OR Sigla = ‘DOE’) AND
[Vencimento Mensal]> 900

6. Seleccione os Departamentos que estão localizados fora de


Porto? R.:
SELECT Sigla
FROM Departamento
WHERE Localização<> “Porto”

Classified as Internal
FACULDADE DE TECNOLOGIA
SENAC
7. Quais os empregados que entraram ao serviço nos meses de Maio, Junho e
Setembro? R.:
SELECT Código Interno
FROM Empregado
WHERE (MONTH([Data de Admissão]) IN (5,6,9))

8. Quais os modelos (código) produzidos pelo Departamento de Operações Externas


(DOE)? R.:
SELECT Código
FROM Produz
WHERE Sigla LIKE ‘DOE’

9. Quais os modelos (código/cor) produzidos pelo Departamento de Operações Externas


(DOE)? R.:
SELECT Modelo.Código,
Cor FROM Produz, Modelo
WHERE Modelo.Sigla LIKE ‘DOE’ AND Modelo.Código=Produz.Código

10. Quais os modelos produzidos por um departamento e por uma secção? ( Nota: A indicação
do departamento e secção será feita aquando da resolução da query (Run) )
R.:
SELECT Código
FROM Produz
WHERE Sigla=[Qual a Sigla do Departamento?] AND Número=[Qual
o Número da Secção Correspondente?]

11. Quais os modelos produzidos pelo departamento onde trabalha o empregado cujo código interno é
12? R.:
SELECT Código
FROM Produz, Empregado
WHERE Empregado.[Código Interno]=12 AND Produz.Sigla=Empregado.Sigla

12. Seleccione os dados dos empregados que são chefes de departamento? (Nota: é importante referir
para cada um o Departamento (Sigla e Designação) que chefiam)
R.:
SELECT Empregado.*,
Departamento.Designação FROM Empregado,
Departamento
WHERE Empregado.[Código Interno]=Departamento.Chefe

Classified as Internal
FACULDADE DE TECNOLOGIA
SENAC

Grupo 03

Considere o seguinte esquema relacional e responda às questões a seguir apresentando o SQL.

Editora (editoraID, denominação, morada, telefone)


Interprete (interpreteID, nome artístico, país, contacto, editoraID)
Disco (referência, titulo, duração, ano edição, editoraID, interpreteID)

1. Quais os interpretes portugueses da editora ‘Pimba


Records’? R.:
SELECT [nome artístico]
FROM Interprete, Editora
WHERE denominação LIKE ‘Pimba Records’ AND país LIKE ‘Portugal’
AND Interprete.editoraID=Editora.editoraID
2. Quantos interpretes há por
país. R.:
SELECT país, COUNT(*) AS [Número de
Intérpretes] FROM Interprete
GROUP BY país

3. Quais as denominações, moradas e telefones das editoras com discos anteriores a


1960. R.:
SELECT denominação, morada,
telefone FROM Editora, Disco
WHERE [ano edição]<1960 AND Disco.editoraID=Editora.editoraID

4. Com base nos valores apresentados para as tabelas Interprete e Disco, apresente o SQL para
obter o resultado que se apresenta a seguir:
Editora
editoraID denominação morada telefone
1 Editora Estrelas Rua do Astrolábio 2155666
2 Pimba Records Rua dos Descobridores 2122233
Interprete
interpreteID nome artístico país contacto editoraID
1 Juanita Espanha 35399343488 1
2 Martim Espanha 3527788777 2
3 Grega Portugal 213377999 1
4 Joaquim Barros Portugal 21445566 2
5 Manuel Portugal 229988777 2

Resultado
denominação países
Pimba Records 3
Editora Estrelas 2
R.:
Pretende-se saber o número de Intérpretes associados a cada Editora. O
campo designado por países dever-se-ia chamar ‘Intérpretes Associados’.
Em SQL seria:

SELECT denominação, COUNT(*) AS


países FROM Interprete, Editora
WHERE Interprete.editoraID=
Editora.editoraID GROUP BY denominação

Classified as Internal

Você também pode gostar