EXPLAIN SELECT
od.product_id,
SUM(IF(o.delivery_date BETWEEN SUBDATE(CURDATE(), INTERVAL 1 YEAR) AND CURDATE(), 1, 0)) AS nb_purchases_since_last_year,
COUNT(od.order_details_id) AS nb_purchases_since_begining
FROM
`order_details` od
INNER JOIN orders o ON (o.order_id = od.order_id AND o.status = 4 AND o.user_id = -1)
INNER JOIN products p ON (od.product_id = p.product_id AND p.status = 1)
WHERE
od.`defined_retail_price_per_unit_for_default_weight` > 0 AND od.product_id NOT IN (SELECT DISTINCT hd_product_id FROM droppoints WHERE hd_product_id IS NOT NULL)
GROUP BY
od.product_id
ORDER BY
SUM(IF(o.delivery_date BETWEEN SUBDATE(CURDATE(), INTERVAL 1 YEAR) AND CURDATE(), 1, 0)) DESC