2
respostas

Minha resolução do Desafio: vendas percentuais por tamanho

Minha resolução do desafio:

SELECT
    VS.TAMANHO,
    VS.ANO,
    VS.VENDA_ANO,
    CONCAT(ROUND(SUM(CONVERT(FLOAT,VS.VENDA_ANO) / CONVERT(FLOAT,VA.VENDA_TOTAL_ANO)) * 100, 2), '%') AS PERCENTUAL_VENDAS
FROM 
    (
        SELECT
            TP.TAMANHO,
            YEAR(NF.DATA_VENDA) AS ANO,
            SUM(INF.QUANTIDADE) AS VENDA_ANO
        FROM TABELA_DE_PRODUTOS TP
        INNER JOIN ITENS_NOTAS_FISCAIS INF ON TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
        INNER JOIN NOTAS_FISCAIS NF ON NF.NUMERO = INF.NUMERO
        WHERE YEAR(NF.DATA_VENDA) = 2015
        GROUP BY TP.TAMANHO, YEAR(NF.DATA_VENDA)
    ) VS
INNER JOIN 
    (
        SELECT
            YEAR(NF.DATA_VENDA) AS ANO,
            SUM(INF.QUANTIDADE) AS VENDA_TOTAL_ANO
        FROM NOTAS_FISCAIS NF
        INNER JOIN ITENS_NOTAS_FISCAIS INF ON NF.NUMERO = INF.NUMERO
        WHERE YEAR(NF.DATA_VENDA) = 2015
        GROUP BY YEAR(NF.DATA_VENDA)
    ) VA
    ON VS.ANO = VA.ANO
GROUP BY VS.TAMANHO, VS.ANO, VS.VENDA_ANO--, VA.VENDA_TOTAL_ANO
ORDER BY VS.VENDA_ANO DESC;
2 respostas

Ei! Tudo bem, Joilson?

Ótima resolução do desafio! Sua query está bem estruturada, com uso certo de subqueries, agregações e cálculos percentuais. Dá para ver que você entendeu bem a lógica de consolidar as vendas por tamanho e comparar com o total anual.

Como melhoria futura, você pode explorar o uso de CTEs (WITH) para deixar a leitura ainda mais organizada, mas a solução que você apresentou está totalmente válida e funcional.

Parabéns pelo avanço!
Continue se dedicando aos estudos e qualquer dúvida, compartilhe!

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado pela dica, Nathalia!