我有一个表格,其中每个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做正确的方向吗?
答案 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