Никакого округления у вас там нет. В вашем запросе выбирается минимальное значение price и первые попавшиеся по остальным полям. Вам нужен запрос типа такого:
SELECT p.id, p.price, p.code FROM products p
JOIN
( SELECT product_id, MIN(price) minPrice
FROM products WHERE price IS NOT NULL GROUP BY product_id
) p2
ON p.price = p2.minPrice AND p.product_id = p2.product_id;