I have a table pedidos
, produtos
and other produtos_em_pedidos
described as follows:
produtos: id | nome
pedidos: id | data
produtos_em_pedidos: produto_id | pedido_id | quantidade
I need to select the products that most occur in the orders, and can filter by date.
One example I've already found is finding the best-selling products globally, without considering the quantity column, via the query:
select produto_id, count(produto_id) from produtos_em_pedidos group by produto_id order by count(produto_id) desc
Now how would I filter this by the date that is in the pedidos
table (ex: WHERE data > 2015-01-01
) and how would I still multiply the count by the quantidade
column?
EDIT: I was able to filter by dates using the following query:
SELECT produto_id, count(produto_id) FROM produtos_em_pedidos
WHERE pedido_id in (select id from pedidos where data > '2015-01-01')
AND pedido_id in (select id from pedidos where data < '2018-01-01')
GROUP BY produto_id
order by count(produto_id) DESC;