Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uruchamianie sum dla wielu kategorii w MySQL

Możesz obliczyć sumę w podzapytaniu:

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

Czytelność handlowania dla szybkości, możesz użyć zmiennej MySQL do przechowywania sumy bieżącej:

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

Aby ta konstrukcja działała, wymagana jest kolejność; jeśli potrzebujesz innej kolejności, zapakuj zapytanie w podzapytanie:

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. Aktualizacja wyzwalacza MySQL z wyborem z innej tabeli

  2. Jak zwrócić wiersze, które mają te same wartości kolumn w MySql

  3. walidacja formularza ajax za pomocą mysqli_query

  4. jak ustawić domyślną wartość dla typu tekstu w mysql

  5. Wybierz tylko niektóre kolumny z tabeli w LEWYM POŁĄCZENIU