-
Notifications
You must be signed in to change notification settings - Fork 0
/
aula3ex011.sql
34 lines (29 loc) · 1.36 KB
/
aula3ex011.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
--11. Desafio: Gere uma consulta na tabela apolice (listas todas as colunas), alterando a coluna cod_cliente Informando o nome do cliente (usar uma subconsulta no select list para isso).
--Utilizando essa consulta como base, faça as alterações necessárias para adicionar uma nova coluna ao final do select list com o valor acumulado da coluna valor_franquia, participado por cliente, e ordenado pelo nome do cliente e pelo código da apólice respectivamente.
--1a opcao - subconsulta inteira dentro do OVER da WINDOW FUNCTION
SELECT cod_apolice
,(SELECT nome FROM cliente WHERE cliente.cod_cliente = apolice.cod_cliente) as nome
,data_inicio_vigencia
,data_fim_vigencia
,valor_cobertura
,valor_franquia
,placa
,SUM(valor_franquia) OVER (
PARTITION BY (SELECT nome FROM cliente WHERE cliente.cod_cliente = apolice.cod_cliente)
ORDER BY (SELECT nome FROM cliente WHERE cliente.cod_cliente = apolice.cod_cliente), cod_apolice) as valor_acumulado
FROM apolice
GO
--2a opcao
with cte as (
SELECT cod_apolice
,(SELECT nome FROM cliente WHERE cliente.cod_cliente = apolice.cod_cliente) as nome
,data_inicio_vigencia
,data_fim_vigencia
,valor_cobertura
,valor_franquia
,placa
FROM apolice
)
select *
,SUM(valor_franquia) OVER (PARTITION BY nome ORDER BY nome, cod_apolice) as valor_acumulado
from cte