Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Mão na massa: finalizando a análise de 80/20

#análise de Pareto

WITH cte_faturamento AS (
  SELECT cl.nome AS cliente, ROUND(SUM(ve.quantidade * ve.preco), 2) AS faturamento
  FROM curso-big-query-19140.belleza_verde_vendas.vendas ve
  INNER JOIN curso-big-query-19140.belleza_verde_vendas.clientes cl ON ve.id_cliente = cl.id_cliente
  WHERE EXTRACT(YEAR FROM ve.data) = 2021 GROUP BY cl.nome
),
faturamento_ranking AS(
  SELECT RANK() OVER(ORDER BY faturamento DESC) AS ranking, *,
         CONCAT(ROUND((faturamento / (SUM(faturamento) OVER())) * 100, 2), '%') AS percentual_participacao
  FROM cte_faturamento
),
dist_cumulativa AS(
  SELECT *, 
         CONCAT(ROUND((SUM(faturamento) OVER(ORDER BY ranking ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / (SUM(faturamento) OVER())) * 100, 2), '%') AS distribuicao_faturamento,
         CONCAT(ROUND((ranking / COUNT (*) OVER()) * 100, 2), '%') AS distribuicao_produtos
  FROM faturamento_ranking
)
SELECT * FROM dist_cumulativa;

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

1 resposta
solução!

Ei! Tudo bem, Vinicius?

Parabéns pelo excelente resultado!

Sua lógica para calcular a distribuição cumulativa tanto do faturamento quanto dos produtos (clientes) está impecável.

O uso de ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW demonstra um domínio técnico muito bom sobre como o BigQuery processa partições de dados.

Continue se dedicando aos estudos e conte sempre consoco por aqui.

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