1
resposta

Fórmula para encontrar a diferença em percentual incorreta

Acredito que no exercício, a dica para para usar a fórmula informada para encontrar a diferença em percentual não está retornando o percentual correto: (1 - (X.QUANTIDADE_LIMITE/X.QUANTIDADE_VENDAS)) * 100, consegui aplicando a seguinte fórmula: (X.QUANTIDADE_LIMITE - X.QUANTIDADE_VENDAS) / X.QUANTIDADE_VENDAS * 100. Segue a minha cosulta para facilitar a análise e verificar se não estou aplicando a dica incorretamente.

SELECT CLIENTES.NOME,
       VENDAS.MES_ANO,
       VENDAS.VOLUME_COMPRADO,
       CLIENTES.VOLUME_DE_COMPRA,
       CASE
         WHEN VOLUME_COMPRADO <= VOLUME_DE_COMPRA THEN
          'COMPRA VÁLIDA'
         ELSE
          'COMPRA INVÁLIDA'
       END AS IS_COMPRA_VALIDA,
       (VENDAS.VOLUME_COMPRADO - CLIENTES.VOLUME_DE_COMPRA) AS DIFERENCA,
       (VENDAS.VOLUME_COMPRADO - CLIENTES.VOLUME_DE_COMPRA) /
       CLIENTES.VOLUME_DE_COMPRA * 100 AS PERCENTUAL_DE_DIFERENCA,
       (1 - (CLIENTES.VOLUME_DE_COMPRA / VENDAS.VOLUME_COMPRADO)) * 100 RESP_PROFESSOR
  FROM (SELECT CPF,
               TO_CHAR(DATA_VENDA, 'MM/YYYY') MES_ANO,
               SUM(QUANTIDADE) VOLUME_COMPRADO
          FROM NOTAS_FISCAIS NF
         INNER JOIN ITENS_NOTAS_FISCAIS INF
            ON NF.NUMERO = INF.NUMERO
         GROUP BY CPF, TO_CHAR(DATA_VENDA, 'MM/YYYY')) VENDAS
 INNER JOIN (SELECT CPF, NOME, VOLUME_DE_COMPRA FROM TABELA_DE_CLIENTES) CLIENTES
    ON VENDAS.CPF = CLIENTES.CPF
 WHERE VOLUME_COMPRADO > VOLUME_DE_COMPRA;
1 resposta

As duas fórmulas podem ser utilizadas para chegar a um resultado percentual:

Em* (1 - ( x / y)) 100* você pode substituir 1 pela expressão " y / y" pois y/y = 1

então: * ( y / y - x / y)100 = (( y-x)/y) 100*

o resultado em ambas as fórmulas deve ser o mesmo.

Mas nesse caso x = volume_de_compra (x.quantidade_limite) e y = volume_comprado (x.quantidade_vendida)

A sua fórmula é diferente porque você está subtraindo o limite pelo volume de compra, e como pelo filtro da query o valor de limite deve ser menor que o valor comprado, você vai ser um percentual negativo.

"WHERE VOLUME_COMPRADO > VOLUME_DE_COMPRA"

como o relatório seria de compras excedentes ao limite, o ideal seria ter usar a fórmula solicitada no exercicio para ter o valor positivo, de foma a apresentar que cliente Fulano comprou 54% acima do limite cadastrado.

Espero ter ajudado!