Mysql
 sql >> база данни >  >> RDS >> Mysql

използвайте mysql SUM() в клауза WHERE

Можете да използвате само агрегати за сравнение в клаузата HAVING:

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

HAVING клауза изисква да дефинирате клауза GROUP BY.

За да получите първия ред, където сумата на всички предишни пари е по-голяма от определена стойност, използвайте:

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

Тъй като агрегатната функция се появява в подзаявка, псевдонимът на колоната за нея може да бъде препратен в клаузата WHERE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добавянето на 'LIMIT 1' към MySQL заявките прави ли ги по-бързи, когато знаете, че ще има само 1 резултат?

  2. Прости произволни извадки от Sql база данни

  3. MySQL Update Inner Join таблици заявка

  4. Вземете текущата година, текущия месец и текущия ден в MySQL

  5. Сортиране по дата и час в низходящ ред?