Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL - Warunek WHERE na SUM()

Można to osiągnąć za pomocą klauzuli HAVING:

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

Uwaga:dodano miejsce, w którym należy umieścić ORDER BY oświadczenie

Optymalizator zapytań nie powinien również wielokrotnie obliczać średniej, więc nie powinno to być tutaj problemem.

Jak wspomniano w odpowiedzi @jagry, powinieneś być w stanie użyć AVG() zamiast SUM() / COUNT()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Query - uzyskaj rekordy na podstawie aktualnej daty

  2. Operator konkatenacji MySQL

  3. Dlaczego mój cfloop zatrzymuje się po wstawieniu pierwszego identyfikatora?

  4. mysql połączone unikalne klucze

  5. SQL liczący wszystkie wiersze zamiast zliczania pojedynczych wierszy