Gabarito Exercício SQL
unknown
sql
3 years ago
2.1 kB
3
Indexable
SELECT conta.numero AS conta,cliente_pai ,nome AS cliente_dependente FROM cliente JOIN cliente_conta ON cliente_conta.id_cliente=cliente.id JOIN (select cliente.nome AS cliente_pai,cliente_conta.id_conta AS conta_pai FROM cliente JOIN cliente_conta ON cliente_conta.id_cliente=cliente.id WHERE dependente=false) AS clientes_pai ON conta_pai = cliente_conta.id_conta JOIN conta ON conta.id=cliente_conta.id_conta WHERE dependente=true ORDER BY conta; --2 Quais foram as 5 que: -- Mais fizeram transações SELECT conta.numero AS conta, COUNT(transacao.id) AS transacoes FROM transacao JOIN cliente_conta ON cliente_conta.id = transacao.id_cliente_conta JOIN conta ON conta.id = cliente_conta.id_conta GROUP BY id_cliente_conta ORDER BY transacoes DESC LIMIT 5; -- Menos fizeram transações SELECT conta.numero AS conta, COUNT(transacao.id) AS transacoes FROM transacao JOIN cliente_conta ON cliente_conta.id = transacao.id_cliente_conta JOIN conta ON conta.id = cliente_conta.id_conta GROUP BY id_cliente_conta ORDER BY transacoes LIMIT 5; --3 Tivemos uma perda de dados e não sabemos qual é o saldo de cada conta, mas temos todas as transações efetuadas. -- Queremos saber qual saldo total das contas registradas em banco! -- Reparem que temos alguns tipos de transações que subtraem dinheiro e outros que somam. SELECT conta.numero AS conta, depositos.total_depositos, debitos.total_debitos, (depositos.total_depositos-debitos.total_debitos) AS saldo FROM conta JOIN (SELECT conta.numero AS conta, SUM(valor) AS total_depositos FROM transacao JOIN cliente_conta ON cliente_conta.id = transacao.id_cliente_conta JOIN conta ON conta.id = cliente_conta.id_conta WHERE id_tipo_transacao= 1 GROUP BY conta) AS depositos ON depositos.conta = conta.numero JOIN (SELECT conta.numero AS conta, SUM(valor) AS total_debitos FROM transacao JOIN cliente_conta ON cliente_conta.id = transacao.id_cliente_conta JOIN conta ON conta.id = cliente_conta.id_conta WHERE id_tipo_transacao <> 1 GROUP BY conta) AS debitos ON debitos.conta = conta.numero;
Editor is loading...