The following query: `SELECT * FROM products WHERE price > (SELECT AVG(price) FROM products)` selects all products with a above-average prices.

Is it possible to do this using aggregate functions somehow instead of a subquery (nested `SELECT`) or a Common Table Expression (`WITH`).

I am asking primarily about Postgres but MySQL or SQL Server also helps.

Something like `SELECT * FROM products HAVING price > AVG(price)`, which doesn't work.