Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Summiert die Werte einer Spalte basierend auf einer Gruppe von Werten aus einer anderen Spalte

Da mysql Fensterfunktionen nicht unterstützt, müssen wir unsere eigene Gruppenrangfolge für Ihre Tabelle erstellen und dann eine weitere Abfrage, um die Ergebnisse zu verarbeiten.

select if(count(transaction) = 1, transaction, concat(min(transaction), '-', max(transaction))) transactions, sum(price) price 
  from (
    select if(`transaction` = @prev + 1, 
         if(@prev := `transaction`, @rank, @rank),
           if(@prev := `transaction`, @rank := @rank + 1, @rank := @rank + 1)
       ) gr,
       `transaction`,
       price
    from table1, (select @rank := 1, @prev := 0) q
    order by `transaction` asc
  ) q     
  group by gr

Demo hier