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

Създайте колона за кумулативна сума в MySQL

Използване на корелирана заявка:

  SELECT t.id,
         t.count,
         (SELECT SUM(x.count)
            FROM TABLE x
           WHERE x.id <= t.id) AS cumulative_sum
    FROM TABLE t
ORDER BY t.id

Използване на MySQL променливи:

  SELECT t.id,
         t.count,
         @running_total := @running_total + t.count AS cumulative_sum
    FROM TABLE t
    JOIN (SELECT @running_total := 0) r
ORDER BY t.id

Забележка:

  • JOIN (SELECT @running_total := 0) r е кръстосано присъединяване и позволява деклариране на променлива, без да се изисква отделен SET команда.
  • Псевдонимът на таблицата, r , се изисква от MySQL за всяка подзаявка/извлечена таблица/вграден изглед

Предупреждения:

  • Специфично за MySQL; не е преносим към други бази данни
  • ORDER BY е важно; той гарантира, че поръчката съответства на OP и може да има по-големи последици за по-сложно използване на променливи (IE:psuedo ROW_NUMBER/RANK функционалност, която липсва на MySQL)


  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

  2. Връщане на "последния" ред на всяка "група по" в MySQL

  3. Как да се свържем дистанционно с MySQL база данни, разположена на нашия споделен сървър

  4. @GeneratedValue полиморфен абстрактен суперклас над MySQL

  5. Резултати от основна заявка на mysql с GROUP BY