sql >> Database >  >> RDS >> Mysql

SQL - WHERE-voorwaarde op SUM()

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()



  1. MySQL LAG/LEAD-probleem

  2. proberen om het aantal maanden te krijgen

  3. SQLite DATEADD() Equivalent

  4. Een beperking voor een externe sleutel toevoegen aan een bestaande tabel in SQL Server (T-SQL)