根据另一列中的一组值对列的值求和

时间:2015-05-08 04:01:32

标签: mysql database

我有一个表格,其中每个transaction都与给定的price相关联。像这样:

transaction  price  
     1        10  
     2        20  
     3        30  
     5        50  
     6        10  
    10        10  
    23        10  
    24        10  
    25        10  
    26        10  
    27        10  

我试图找到一种基于特定交易或一组交易来汇总price的方法。查询的结果将是这样的:

transaction  price
   1-3        60
   5-6        60
    10        10
 23-27        50

这样我可以告诉对于事务1到3,结果是60,依此类推。你能指出我使用MySQL做正确的方向吗?

1 个答案:

答案 0 :(得分:2)

由于mysql不支持窗口函数,因此我们必须为您的表创建自己的组排名,然后使用另一个查询来处理结果。

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 here