Mostre quais os clientes tem idade superior a média.
SELECT ClienteNome,YEAR(GETDATE()) -YEAR(ClienteNascimento) AS idadeFROM ClientesWHEREYEAR(GETDATE()) -YEAR(ClienteNascimento) >(SELECTAVG(YEAR(GETDATE()) -YEAR(ClienteNascimento)) AS IDADEFROM Clientes);
Mostre qual agência tem quantidade de clientes acima da média.
SELECT AgenciaNome,COUNT(ClienteCodigo) AS QDTEFROM ContasINNER JOIN AgenciasON Agencias.AgenciaCodigo = Contas.AgenciaCodigoGROUP BY AgenciaNomeHAVINGCOUNT(ClienteCodigo) >(SELECTCOUNT(DISTINCT ClienteCodigo) /COUNT(DISTINCT AgenciaCodigo)FROM Contas);
Mostre o nome da agência o saldo total, o mínimo, o máximo e a quantidade de clientes de cada agência.
SELECT AgenciaNome,SUM(ContaSaldo) AS TOTAL,MIN(ContaSaldo) AS MINIMO,MAX(ContaSaldo) AS MAXIMO,COUNT(Contas.ClienteCodigo) AS QTDE_CLIENTESFROM ContasINNER JOIN dbo.AgenciasON Agencias.AgenciaCodigo = Contas.AgenciaCodigoGROUP BY dbo.Agencias.AgenciaNome;--ATENCAO AQUI PARA COUNT(*) E COUNT(DISTINT)
Mostre o percentual que cada agencia representa no saldo total do banco.
SELECT AgenciaNome,SUM(ContaSaldo) / (SELECTSUM(ContaSaldo) FROM dbo.Contas ) *100AS PERCENTUALFROM ContasINNER JOIN dbo.AgenciasON Agencias.AgenciaCodigo = Contas.AgenciaCodigoGROUP BY dbo.Agencias.AgenciaNome;
Mostre as duas cidades que tem o maior saldo total.
SELECTTOP2 AgenciaCidade,SUM(ContaSaldo) AS SALDO_TOTALFROM ContasINNER JOIN AgenciasON Agencias.AgenciaCodigo = Contas.AgenciaCodigoGROUP BY AgenciaCidadeORDER BY2DESC;
Mostre qual a agência tem o maior montante de empréstimo.
Mostre qual o menor valor devido, o maior e o total devido da tabela devedor.
SELECTMIN(DevedorSaldo) AS MINIMO,MAX(DevedorSaldo) AS MAXIMO,SUM(DevedorSaldo) AS TOTALFROM dbo.Devedores;
Mostre o nome do cliente, se ele tem cartão de crédito, apenas do cliente que é o maior devedor.
SELECTTOP1--Experimente remover o TOP 1 para conferir o resultado ClienteNome,CASEWHEN dbo.CartaoCredito.ClienteCodigo ISNULLTHEN'NÃO TEM CARTÃO CRÉDITO'ELSE'TEM CARTÃO CRÉDITO'ENDAS'CARTAO', DevedorSaldoFROM dbo.ClientesINNER JOIN dbo.DevedoresON Devedores.ClienteCodigo = Clientes.ClienteCodigoLEFT JOIN dbo.CartaoCreditoON CartaoCredito.ClienteCodigo = Clientes.ClienteCodigoORDER BY3DESC;
Mostre o nome do cliente, a idade, o saldo total em conta, seu total devido, seu total emprestado e se tem cartão de crédito ou não. Os valores nulos devem aparecer como 0.00. A ordenação dever ser sempre pelo maior devedor.
Insira um novo cliente chamado Silvio Santos, crie uma conta para ele com saldo de R$ 500,00 na agência Beira Mar. Cadastre um cartão de crédito com limite de 5000,00.
INSERT Clientes( ClienteNome, ClienteRua, ClienteCidade, ClienteNascimento)VALUES('Silvio Santos', 'Rua João Colin, 1234', 'Joinville', '1980-01-01');SELECT @@IDENTITY; --RETORNA O CÓDIGO DO CLIENTE GERADO PELO AUTO INCREMENTO IDENTITYINSERT Contas( AgenciaCodigo, ContaNumero, ClienteCodigo, ContaSaldo, ContaAbertura)OUTPUT INSERTED.*--RETORNA OS REGISTROS INSERIDOS NA TABELAVALUES(5, 'C-999', 14, 500, '2016-01-01');INSERT CartaoCredito( AgenciaCodigo, ClienteCodigo, CartaoCodigo, CartaoLimite)VALUES(5, 14, '1234-1234-1234-1234', 5000);
Altere a rua do cliente Ana para Rua da Univille.
UPDATE dbo.ClientesSET ClienteRua ='Rua da Univille'WHERE ClienteNome ='Ana';
USE MinhaCaixa_Beta;GOSELECTCOUNT(dbo.Clientes.ClienteCodigo) AS Quantidade, dbo.Clientes.ClienteBairroFROM dbo.ClientesGROUP BY dbo.Clientes.ClienteBairroORDER BY1DESC;
Mostre a renda de cada cliente convertida em dólar.
USE MinhaCaixa_Beta;GOSELECT ClienteNome +' '+ ClienteSobrenome AS Cliente,CONVERT(DECIMAL(10, 2), Clientes.ClienteRendaAnual /3.25) AS RENDADOLARFROM dbo.Clientes;
Mostre o nome do cliente, o número da conta, o saldo da conta, apenas para os 15 melhores clientes.
USE MinhaCaixa_Beta;GOSELECTTOP15 ClienteNome +' '+ ClienteSobrenome AS Cliente, Contas.ContaNumero,SUM(MovimentoValor * MovimentoTipo) AS SaldoFROM dbo.ClientesINNER JOIN dbo.ContasON Contas.ClienteCodigo = Clientes.ClienteCodigoINNER JOIN dbo.MovimentosON Movimentos.ContaNumero = Contas.ContaNumeroGROUP BY ClienteNome +' '+ ClienteSobrenome, Contas.ContaNumeroORDER BY3DESC;
Mostre quais são os 5 dias com maior movimento (valor) no banco.
USE MinhaCaixa_Beta;GOSELECTTOP5DAY(Movimentos.MovimentoData) AS DIA,SUM(dbo.Movimentos.MovimentoValor * dbo.Movimentos.MovimentoTipo) AS VALORFROM dbo.MovimentosGROUP BYDAY(Movimentos.MovimentoData)ORDER BY2DESC;
Crie uma função que receba o código do estado civil e mostre ele por extenso.
Crie uma função que receba o código do sexo e mostre ele por extenso.
Crie um procedure que receba o número da conta e cadastre um cartão de crédito com limite de R$ 500 para o cliente caso ele não tenha (MinhaCaixa).
Use o script abaixo para criar uma procedure que receba a matricula, disciplina, ano e calcule o total de pontos e a média do aluno.
Use o script abaixo para criar duas procedures: Uma procedure para cadastrar os alunos em duas matérias (BDA e PRG). Exemplo: exec procedure @matricula, @materia, @ano (matricular 6 alunos) Uma procedure que receba a matricula, disciplina, ano, bimestre, aulas dadas, notas e faltas. Quando a condição dentro da procedure identificar que é o quarto bimestre calcule o total de pontos, total de faltas, percentual de frequencia,a média do aluno e calcule o resultado final, A, E ou R. Exemplo: exec procedure @matricula, @materia, @ano, 1, 32, 7, 0