1
resposta

Desafio 3

No desafio 3 "exibir os 10 produtos mais vendidos durante o ano de 2019" eu levei em consideração a quantidade que é indicada na tabela "itens_pedidos", acredito que a forma como foi feita seria mais para a "quantidade de vendas do produto". Usei o código para resolver o desafio.

query = ''' SELECT PEDIDOS.PRODUTO_ID, SUM(ITENS_PEDIDOS.QUANTIDADE) AS 'TOTAL'
FROM PEDIDOS, ITENS_PEDIDOS
WHERE strftime('%Y',data_compra) = '2019' AND PEDIDOS.PEDIDO_ID = ITENS_PEDIDOS.PEDIDO_ID
GROUP BY PEDIDOS.PRODUTO_ID
ORDER BY TOTAL DESC;
'''

produtos_vendidos = sql_df(query)
produtos_vendidos.head(10)

Fiquei com vontade de colocar os nomes, mas não consegui associar as tabelas pelo sqlite, então usei o pandas para fazer isso da seguinte forma.

desafio_3 =  pd.merge(produtos_vendidos, produtos, on = "produto_id")
desafio_3 = desafio_3.drop(['produto_id', 'preco', 'marca', 'sku', 'Condicao'], axis = 1)
desafio_3['Qtd_vendida_2019'] = desafio_3['TOTAL']
desafio_3 = desafio_3.drop(['TOTAL'], axis = 1)
desafio_3 = desafio_3.head(10)
desafio_3

Gostaria de opiniões sobre o que eu pensei e fiz. Uma outra dúvida foi.

query = ''' SELECT PEDIDOS.PRODUTO_ID, SUM(ITENS_PEDIDOS.QUANTIDADE) AS 'Total'
FROM PEDIDOS, ITENS_PEDIDOS
WHERE strftime('%Y',data_compra) = '2019' AND PEDIDOS.PRODUTO_ID = ITENS_PEDIDOS.PRODUTO_ID
GROUP BY PEDIDOS.PRODUTO_ID;

'''
sql_df(query)

Qual o que está sendo somado nesse código, eu acreditava que ele traria o mesmo resultado que o anterior.

Desde já obrigado =)

1 resposta

Bom dia! analaisando a situação vejo os seguintes cenarios:

  1. Solução para o Desafio 3: Sua primeira query é correta para obter os 10 produtos mais vendidos durante o ano de 2019, com base na quantidade total de itens vendidos por produto. Você agrupou os resultados pela coluna PRODUTO_ID, somou as quantidades de cada produto usando SUM(ITENS_PEDIDOS.QUANTIDADE) e ordenou em ordem decrescente pela quantidade vendida (TOTAL DESC).

Após executar a primeira query e obter os resultados, você decidiu adicionar os nomes dos produtos à saída usando a biblioteca pandas. Para isso, você realizou um merge dos resultados da primeira query (produtos_vendidos) com a tabela produtos com base na coluna produto_id. Em seguida, você removeu as colunas desnecessárias e renomeou a coluna TOTAL para Qtd_vendida_2019.

Essa abordagem está correta e é uma maneira válida de associar os nomes dos produtos aos resultados.

  1. Diferença entre as duas queries: A diferença entre as duas queries está na cláusula de junção (JOIN) entre as tabelas PEDIDOS e ITENS_PEDIDOS. Vamos analisá-las em detalhes:

Primeira query:

SELECT PEDIDOS.PRODUTO_ID, SUM(ITENS_PEDIDOS.QUANTIDADE) AS 'TOTAL'
FROM PEDIDOS, ITENS_PEDIDOS
WHERE strftime('%Y', data_compra) = '2019' AND PEDIDOS.PEDIDO_ID = ITENS_PEDIDOS.PEDIDO_ID
GROUP BY PEDIDOS.PRODUTO_ID
ORDER BY TOTAL DESC;

Nessa query, você está somando as quantidades de itens vendidos (SUM(ITENS_PEDIDOS.QUANTIDADE)) agrupados por PRODUTO_ID. A condição PEDIDOS.PEDIDO_ID = ITENS_PEDIDOS.PEDIDO_ID garante que você está relacionando corretamente os pedidos com os itens correspondentes.

Segunda query:

SELECT PEDIDOS.PRODUTO_ID, SUM(ITENS_PEDIDOS.QUANTIDADE) AS 'Total'
FROM PEDIDOS, ITENS_PEDIDOS
WHERE strftime('%Y', data_compra) = '2019' AND PEDIDOS.PRODUTO_ID = ITENS_PEDIDOS.PRODUTO_ID
GROUP BY PEDIDOS.PRODUTO_ID;

Nessa query, você também está somando as quantidades de itens vendidos (SUM(ITENS_PEDIDOS.QUANTIDADE)), mas agora está agrupando por PEDIDOS.PRODUTO_ID. A condição PEDIDOS.PRODUTO_ID = ITENS_PEDIDOS.PRODUTO_ID na cláusula WHERE está relacionando a tabela PEDIDOS com a tabela ITENS_PEDIDOS com base no PRODUTO_ID.

A principal diferença é que na primeira query, você está agrupando por PRODUTO_ID na tabela PEDIDOS, enquanto na segunda query, você está agrupando por PRODUTO_ID na tabela ITENS_PEDIDOS. Isso faz com que os resultados sejam diferentes, pois a quantidade de itens vendidos por produto pode variar em ambas as situações, dependendo de como os dados estão organizados nas tabelas.

Para obter resultados corretos, você deve agrupar pela coluna que representa os produtos, que normalmente é PRODUTO_ID, mas pode variar dependendo da estrutura do banco de dados.

Espero que isso esclareça suas dúvidas! Se houver mais alguma coisa em que eu possa ajudar, é só dizer! =) E se te ajudou marca como solucionado.