SQL - WHERE Condition on SUM()

conditional-statements, mysql, sql, sum

Solution

This can be accomplished with a HAVING clause:

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

Note: Added where to put `ORDER BY` statement

The query optimizer should also not calculate the Average multiple times either, so that should not be a concern here.

As was mentioned in @jagra's answer, you should be able to use `AVG()` instead of `SUM() / COUNT()`

Problem

Is it possible to do something like this: ``` 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 vt.review_id = e.review_id WHERE (rating >= '0') GROUP BY `vt`.`review_id` ``` In particular I would like to put a where condition on the division result value

Original source