在MySQL中添加特定的每N行

时间:2013-10-24 23:49:54

标签: mysql rank ceil

我正在试图弄清楚如何从这个样本表中选择并总结前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。

2 个答案:

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