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

Somma i valori di una colonna in base a un gruppo di valori di un'altra colonna

Poiché mysql non supporta le funzioni di windowing, dobbiamo creare la nostra classifica di gruppo per la tua tabella e quindi un'altra query per operare sui risultati.

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

dimostrazione qui