sql >> Base de Datos >  >> RDS >> Mysql

Sume los valores de una columna en función de un grupo de valores de otra columna

Dado que mysql no tiene soporte para funciones de ventana, tenemos que crear nuestra propia clasificación de grupo para su tabla y luego otra consulta para operar en los resultados.

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

demostración aquí