Olá! Tenho algumas perguntas:
Na questão 2, o correto não seria:
SELECT COUNT(iv.produto_id) AS Qtd_Produtos_Vendidos
FROM vendas v
JOIN itens_venda iv ON v.id_venda = iv.venda_id
WHERE strftime('%Y', v.data_venda) = '2022';
Porque a resposta do professor conta a quantidade de vendas no Ano de 2022, e não a quantidade de produtos vendidos em 2022, é isso mesmo?
Na questão 7, não é necessário selecionar a tabela vendas, uma vez que não haverá nenhum filtro de tempo:
SELECT c.nome_categoria AS Categoria, COUNT(iv.produto_id) AS Qtd_Produtos_Vendidos
FROM itens_venda iv
JOIN produtos p ON iv.produto_id = p.id_produto
JOIN categorias c ON p.categoria_id = c.id_categoria
GROUP BY Categoria
ORDER BY Qtd_Produtos_Vendidos DESC
LIMIT 2;
A questão 10 fiz de um jeito um pouco mais simples do que a resposta do professor, que acho que atende ao enunciado:
-- 10 - Crie uma métrica mostrando a porcentagem de vendas a mais que a melhor categoria tem em relação a pior no ano de 2022.
WITH Categorias_Mais_Vendidas_2022 AS (
SELECT c.nome_categoria AS Categoria, COUNT(iv.produto_id) AS Qtd_Vendas
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 categorias c ON p.categoria_id = c.id_categoria
WHERE strftime('%Y', v.data_venda) = '2022'
GROUP BY Categoria
)
SELECT MAX(cv.Qtd_Vendas) AS Categoria_Mais_Vendida_2022,
MIN(cv.Qtd_Vendas) AS Categoria_Menos_Vendida_2022,
ROUND(100.0*MAX(cv.Qtd_Vendas)/MIN(cv.Qtd_Vendas), 2) || '%' AS Porcentagem_De_Aumento
FROM Categorias_Mais_Vendidas_2022 cv
;
Está tudo certo?