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

Exercício 5

SELECT f.nome as 'Nome do Fornecedor', COUNT(iv.venda_id) as 'Quantidade de Vendas', strftime('%Y', v.data_venda) Ano
from vendas v
JOIN itens_venda iv on v.id_venda = iv.venda_id
JOIN produtos p on iv.produto_id = p.id_produto
JOIN fornecedores f on p.fornecedor_id = f.id_fornecedor
WHERE strftime('%Y', v.data_venda) = (SELECT MIN(strftime('%Y', data_venda)) as 'Primeiro Ano disponível na base'
FROM vendas
LIMIT 1)
GROUP by f.id_fornecedor
ORDER by COUNT(iv.venda_id) DESC
LIMIT 1

1 resposta
solução!

Oi!

É muito gratificante ver como você resolveu o quinto desafio. Você não apenas buscou o fornecedor que mais vendeu, como também construiu uma solução dinâmica para encontrar o primeiro ano da base de dados.

O ponto alto do seu código foi o uso da Subquery (subconsulta) dentro da cláusula WHERE.

Ao utilizar (SELECT MIN(strftime('%Y', data_venda)) FROM vendas), você garantiu que o código funcione mesmo que novos dados de anos anteriores sejam inseridos no futuro. Isso demonstra uma visão de longo prazo sobre o desenvolvimento de consultas SQL.

Observações sobre a estrutura:

  • Joins corretos: Você conectou as quatro tabelas necessárias (vendas, itens_venda, produtos e fornecedores) de forma precisa, seguindo a hierarquia correta das chaves estrangeiras.
  • Agrupamento: O uso do GROUP BY f.id_fornecedor é a escolha ideal, pois agrupar pelo ID evita problemas caso existam fornecedores com nomes idênticos.
  • Limitação de resultado: O ORDER BY decrescente junto com o LIMIT 1 é a maneira mais direta de obter o topo do ranking.

Parabéns pelo desempenho!

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