sql >> Database teknologi >  >> RDS >> Mysql

Opret en kumulativ sumkolonne i MySQL

Brug af en korreleret forespørgsel:

  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

Brug af MySQL-variabler:

  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

Bemærk:

  • Den JOIN (SELECT @running_total :=0) r er en krydskobling og giver mulighed for variabeldeklaration uden at kræve et separat SET kommando.
  • Tabelaliaset, r , er påkrævet af MySQL for enhver underforespørgsel/afledt tabel/inline-visning

Forbehold:

  • MySQL-specifik; kan ikke overføres til andre databaser
  • ORDER BY er vigtigt; det sikrer, at rækkefølgen matcher OP og kan have større implikationer for mere kompliceret variabel brug (dvs.:psuedo ROW_NUMBER/RANK funktionalitet, som MySQL mangler)


  1. Gruppér efter værdier, der er i rækkefølge

  2. Forstå deadlocks i MySQL og PostgreSQL

  3. Administrer MDF-filer i SQL Server 2019

  4. Sådan returneres oracle-outputparametre fra en lagret procedure i .NET