1

我试图弄清楚如何从这个示例表中选择并总结前 2 条记录,接下来的两条记录,等等......。我一直在尝试使用 rank 和 ceil,但我显然无法取得成功,所以提前感谢可以提供帮助的人。

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 行的示例,并为 1st/2nd、3rd/4th、5th/6th 等添加了 int_value。

4

2 回答 2

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是要分组的行数。

于 2013-10-25T00:26:44.790 回答
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 |

这是小提琴

于 2013-10-25T00:24:14.787 回答