我试图弄清楚如何从此示例表中进行选择,并对前2条记录,后两条记录等求和。我一直在尝试使用等级制度,但显然我没有设法取得成功,因此在此先感谢能为您提供帮助的人。
recid text1 int_value
1 Blue 3
2 Green 4
3 Yellow 6
4 Red 9
5 Purple 34
6 Black 3
以实现将第一/第二行,第三/第四行,第五/第六行相加的预期结果:
sumvalueis
7
15
37
实际上,该表可能有更多行,但这是一个只有6行的示例,并为1st / 2nd,3rd / 4th,5th / 6th等添加了int_value。
最佳答案
这是查询:
SELECT sum(int_value) SumValueIs FROM (
SELECT int_value, ceil((@rank := @rank + 1) / 2) aGroup
FROM t, (SELECT @rank := 0) init
ORDER BY recid
) s
GROUP BY aGroup
这是输出:
| SUMVALUEIS |
|------------|
| 7 |
| 15 |
| 37 |
这是fiddle。