我正在试图弄清楚如何从这个样本表中选择并总结前2条记录,接下来的两条记录等等。我一直在努力使用等级和天花板,但我显然无法取得成功,所以提前感谢那些可以提供帮助的人。
recid text1 int_value
1 Blue 3
2 Green 4
3 Yellow 6
4 Red 9
5 Purple 34
6 Black 3
达到理想的第1 /第2行,然后是第3 /第4行,然后第5 /第6行的结果:
sumvalueis
7
15
37
实际上,该表可能有更多行,但这是一个只有6行的示例,并为第1 /第2,第3 /第4,第5 /第6等添加了int_value。
答案 0 :(得分:0)
以下是查询:
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。
答案 1 :(得分:0)
你可以尝试这样的事情。它不会很快,但查看您的示例数据应符合此目的。
SELECT @rownum := 1, SUM(int_value) AS sumvalueis FROM (
SELECT t.*, @rownum := @rownum + 1 AS rank
FROM your_table t
) AS ranked
GROUP BY FLOOR(rank/2)
rank/2
是要分组的行数。