: normal">Banco de Dados
Desafio da SQL Magazine
Resposta do desafio
Antes de tentar resolver um desafio é preciso entender o problema, em nosso caso o gerente de uma loja quer saber não só o total de vendas por vendedor, mas também em que ordem as vendas aconteceram.
Portanto, a idéia é seguir a seqüência de vendas através do id_vendas e verificar quem é o próximo vendedor, quando houver quebra de vendedor, fazemos a soma e mostramos as seqüências inicial e final.
Vejamos esta solução passo-a-passo.
1) O primeiro passo é descobrir a seqüência de vendas e vendedores. Para isso, utilizei a função analítica lag( ) ordenada pelo id_venda. Veja o resultado na Listagem 1.
SQL>SELECT LAG(VENDEDOR) OVER (ORDER BY ID_VENDAS) LAG_VEND, V.*
2 FROM VENDAS V
3 /
LAG_VEND ID_VENDAS VENDEDOR VENDAS_VALOR
---------- ---------- ---------- ------------
1 MARIA .4
MARIA 2 MARIA .8
MARIA 3 MARIA 1.2
MARIA 4 MARIA 1.6
MARIA 5 MARIA 2
MARIA 6 MARIA 2.4
MARIA 7 MARIA 2.8
MARIA 8 MARIA 3.2
MARIA 9 MARIA 3.6
MARIA 10 MARIA ...