sql >> Databasteknik >  >> RDS >> Mysql

Summera värdena för en kolumn baserat på en grupp värden från en annan kolumn

Eftersom mysql inte har stöd för fönsterfunktioner måste vi skapa vår egen grupprankning för din tabell och sedan en annan fråga för att arbeta på resultaten.

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 här




  1. Enkel MySQL-uppdateringsrankning med band

  2. SQL Server Performance TOP IO Query -1

  3. Får fel Kommandon osynkroniserade, du kan inte köra kommandot nu medan du kör en lagrad procedur i mysql/PHP

  4. PostgreSQL-motsvarighet till SQLServers NoLock-tips