Esse artigo faz parte da revista SQL Magazine edição 46. Clique aqui para ler todos os artigos desta edição

: 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                 ...

Quer ler esse conteúdo completo? Tenha acesso completo