Dit kan worden bereikt met een HAVING-clausule:
SELECT e.*, rt.review_id, (SUM(vt.percent) / COUNT(vt.percent)) AS rating
FROM catalog_product_entity AS e
INNER JOIN rating_option_vote AS vt ON e.review_id = vt.review_id
GROUP BY vt.review_id
HAVING (SUM(vt.percent) / COUNT(vt.percent)) >= 0
ORDER BY (SUM(vt.percent) / COUNT(vt.percent)) ASC
Opmerking:toegevoegd waar ORDER BY
. moet worden geplaatst verklaring
De query-optimizer mag het gemiddelde ook niet meerdere keren berekenen, dus dat zou hier geen probleem moeten zijn.
Zoals vermeld in het antwoord van @jagra, zou je AVG()
. moeten kunnen gebruiken in plaats van SUM() / COUNT()