1
resposta

MINHA RESOLUÇÃO

Primeiramente esse é o código principal

SELECT 
TP.TAMANHO, 
EXTRACT( YEAR FROM NF.DATA_VENDA) AS ANO,
SUM(ITEM.QUANTIDADE) AS QUANTIDADE_TOTAL,
ROUND((SUM(ITEM.QUANTIDADE) / MAX(QUANTIDADE_TOTAL_ANUAL.QUANTIDADE_TOTAL)) * 100, 2) || '%' AS PORCENTAGEM
FROM 
TABELA_DE_PRODUTOS TP
INNER JOIN
ITENS_NOTAS_FISCAIS ITEM
ON
TP.CODIGO_DO_PRODUTO = ITEM.CODIGO_DO_PRODUTO
INNER JOIN
NOTAS_FISCAIS NF
ON
ITEM.NUMERO = NF.NUMERO
INNER JOIN 
(SELECT 
EXTRACT(YEAR FROM NF.DATA_VENDA) AS ANO,
SUM(ITEM.QUANTIDADE) AS QUANTIDADE_TOTAL
FROM
NOTAS_FISCAIS NF
INNER JOIN
ITENS_NOTAS_FISCAIS ITEM
ON
NF.NUMERO = ITEM.NUMERO
WHERE EXTRACT(YEAR FROM NF.DATA_VENDA) = 2016
GROUP BY EXTRACT(YEAR FROM NF.DATA_VENDA)) QUANTIDADE_TOTAL_ANUAL
ON
EXTRACT(YEAR FROM NF.DATA_VENDA) = QUANTIDADE_TOTAL_ANUAL.ANO
WHERE EXTRACT(YEAR FROM NF.DATA_VENDA) = 2016
GROUP BY TP.TAMANHO, EXTRACT(YEAR FROM NF.DATA_VENDA)
ORDER BY QUANTIDADE_TOTAL DESC;

E este é o código para achar o total da vendas

SELECT 
EXTRACT(YEAR FROM NF.DATA_VENDA) AS ANO,
SUM(ITEM.QUANTIDADE) AS QUANTIDADE_TOTAL
FROM
NOTAS_FISCAIS NF
INNER JOIN
ITENS_NOTAS_FISCAIS ITEM
ON
NF.NUMERO = ITEM.NUMERO
WHERE EXTRACT(YEAR FROM NF.DATA_VENDA) = 2016
GROUP BY EXTRACT(YEAR FROM NF.DATA_VENDA);

Segue resultado final

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi, Adriano! Como vai?

Agradeço por compartilhar.

Gostei da sua resolução, a lógica ficou bem organizada ao separar o cálculo do total anual em uma subquery e depois usar esse valor para calcular a porcentagem por tamanho. O uso do EXTRACT(YEAR FROM NF.DATA_VENDA) também ficou adequado para filtrar e agrupar as vendas de 2016, e o ROUND ajuda a deixar o resultado final mais legível.

Dica: para deixar a consulta mais fácil de manter, você pode usar aliases mais curtos e evitar repetir muitas vezes o EXTRACT(YEAR FROM NF.DATA_VENDA), organizando essa informação em uma subconsulta ou CTE. Isso facilita a leitura quando a consulta cresce. Continue praticando joins e agregações, pois esse tipo de consulta é muito usado em análises de vendas.

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