Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Soma os valores de uma coluna com base em um grupo de valores de outra coluna


Como o mysql não tem suporte para funções de janela, temos que criar nossa própria classificação de grupo para sua tabela e, em seguida, outra consulta para operar nos 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

demonstração aqui