SELECT
p.id,
p.name,
p.price AS catalog_price,
(
SELECT AVG(op.price_per_unit)
FROM ordered_products op
WHERE op.product_id = p.id
) AS avg_ordered_price
FROM product p
WHERE p.id IN (
SELECT product_id
FROM ordered_products
GROUP BY product_id
HAVING AVG(price_per_unit) > (
SELECT AVG(price_per_unit)
FROM ordered_products
)
);