sql >> Databáze >  >> RDS >> Mysql

použijte mysql SUM() v klauzuli WHERE

Agregáty můžete použít pouze pro srovnání v klauzuli HAVING:

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

HAVING klauzule vyžaduje, abyste definovali klauzuli GROUP BY.

Chcete-li získat první řádek, kde je součet všech předchozích peněz větší než určitá hodnota, použijte:

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

Protože se agregační funkce vyskytuje v poddotazu, na alias sloupce pro ni lze odkazovat v klauzuli WHERE.



  1. Vytvoření sekvence PostgreSQL do pole (které není ID záznamu)

  2. Duplikujte, kopírujte nebo zálohujte tabulky v MySQL, MariaDB, Oracle, PostgreSQL, DB2 a SQLite pomocí Create Table As SQL

  3. Vrací hodnotu sloupce identity po vložení do Oracle

  4. Jak obnovit databázi SQL Server na Macu pomocí Azure Data Studio