sql >> Database >  >> RDS >> Mysql

gebruik mysql SUM() in een WHERE-component

U kunt alleen aggregaten gebruiken voor vergelijking in de HAVING-clausule:

GROUP BY ...
  HAVING SUM(cash) > 500

De HAVING clausule vereist dat u een GROUP BY-clausule definieert.

Om de eerste rij te krijgen waar de som van al het voorgaande geld groter is dan een bepaalde waarde, gebruikt u:

SELECT y.id, y.cash
  FROM (SELECT t.id,
               t.cash,
               (SELECT SUM(x.cash)
                  FROM TABLE x
                 WHERE x.id <= t.id) AS running_total
         FROM TABLE t
     ORDER BY t.id) y
 WHERE y.running_total > 500
ORDER BY y.id
   LIMIT 1

Omdat de aggregatiefunctie in een subquery voorkomt, kan in de WHERE-component worden verwezen naar de kolomalias ervoor.



  1. Hoe een externe sleutelbeperking te maken met ON DELETE SET NULL-optie in SQL Server - SQL Server / TSQL-zelfstudie deel 81

  2. Automatisch antwoordbestand genereren

  3. Kan de IN-operator LIKE-jokertekens (%) gebruiken in Oracle?

  4. Hoe kan ik 'invoegen indien niet bestaat' in MySQL doen?