我试图弄清楚如何从此示例表中进行选择,并对前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

10-06 03:03