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

Изпълнение на суми за множество категории в MySQL

Можете да изчислите сумата в подзаявка:

select  Category
,       Time
,       Qty
,       (
        select  sum(Qty) 
        from    YourTable t2 
        where   t1.Category = t2.Category 
                and t1.Time >= t2.Time
        ) as CatTotal
from    YourTable t1

Четимост за търговия за скорост, можете да използвате променлива MySQL, за да задържите текущата сума:

select  Category
,       Time
,       Qty
,       @sum := if(@cat = Category,@sum,0) + Qty as CatTotal
,       @cat := Category
from    YourTable
cross join
        (select @cat := '', @sum := 0) as InitVarsAlias
order by
        Category
,       Time

Поръчката е необходима, за да работи тази конструкция; ако имате нужда от различна поръчка, обвийте заявката в подзаявка:

select  Category
,       Time
,       Qty
,       CatTotal
from    (
        select  Category
        ,       Time
        ,       Qty
        ,       @sum := if(@cat = Category,@sum,0) + Qty as CatTotal
        ,       @cat := Category
        from    YourTable
        cross join
                (select @cat := '', @sum := 0) as InitVarsAlias
        order by
                Category
        ,       Time
        ) as SubQueryAlias
order by
        Time



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli::query():Не можах да извлечем mysqli

  2. MySQL заявка намира стойности в низ, разделен със запетая

  3. Промяна на папката tmp на mysql

  4. MySqlCommand().ExecuteReader().GetString() не работи

  5. Грешка в MySQL:спецификация на ключ без дължина на ключа