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

Solução - Categorias de produtos na Black Friday

Fiz a atividade proposta e o resultado está abaixo, porém achei bem próximo do primeiro realizado pelo instrutor, teria alguma outra maneira de realiza-lo?

SELECT strftime('%Y/%m', v.data_venda) AS Tempo, c.nome_categoria AS Categorias, count(iv.produto_id) AS Qtd_Vendas
FROM categorias c
JOIN produtos p
ON c.id_categoria = p.categoria_id
JOIN itens_venda iv
ON p.id_produto = iv.produto_id
JOIN vendas v
ON iv.venda_id = v.id_venda
GROUP BY Categorias, Tempo
ORDER BY categorias;
1 resposta
solução!

Oii, Felipe! Como você está?

Parabéns pela atividade realizada! É muito legal ver você querendo explorar outras formas de realizar a consulta. Vamos ver a opção de usar subconsultas ou CTEs (Common Table Expressions) para organizar os dados antes de agrupar e ordenar. Segue um exemplo usando CTE:

WITH Vendas_Categorias AS (
    SELECT 
        strftime('%Y/%m', v.data_venda) AS Tempo, 
        c.nome_categoria AS Categorias, 
        iv.produto_id
    FROM 
        categorias c
    JOIN 
        produtos p ON c.id_categoria = p.categoria_id
    JOIN 
        itens_venda iv ON p.id_produto = iv.produto_id
    JOIN 
        vendas v ON iv.venda_id = v.id_venda
)
SELECT Tempo, Categorias,
COUNT(produto_id) AS Qtd_Vendas
FROM Vendas_Categorias
GROUP BY Categorias, Tempo
ORDER BY Categorias;

Traduzindo: a CTE Vendas_Categorias primeiro coleta os dados relevantes, depois a consulta principal agrupa e conta as vendas por categoria e tempo. Captura de tela mostrando o código descrito anteriomente em uma janela no sqlite. Além do código, temos a saída dele que consiste em dados de tempo, categoria e quantidade de vendas.

Faça o teste e observe se o código retorna como esperado. Qualquer dúvida, não deixe de compartilhar no fórum.

Bons estudos, Felipe!