0

我正在尝试按 sql 中的某个数字对结果进行分组。即,如果我有 60 行并且我想按 10 行分组,我将有 6 组,每组 10 行,反映表中结果的当前顺序(在每组中,我将有该组中的行)。有没有办法做到这一点?

4

3 回答 3

2

MS SQL ( sqlfiddle ):

WITH cte(groupNumber, Id) AS
(
  SELECT
    (ROW_NUMBER( ) OVER ( ORDER BY Id )) / 10 AS groupNumber,
    Id
  FROM
    MyTable
)
SELECT
  MAX( Id ),
  groupNumber
FROM
  cte
GROUP BY
  groupNumber;

MySQL ( sqlfiddle ):

SELECT
  MAX( Id ),
  groupNumber
FROM
  (
    SELECT
      Id,
      CAST( FLOOR( (@a := @a + 1 ) / 10 ) AS UNSIGNED ) AS groupNumber
    FROM
      MyTable
    ORDER BY
      Id
  ) AS tmp,
  (SELECT @a := 0) r
GROUP BY
  groupNumber;
于 2012-09-11T12:12:53.373 回答
0

我会这样做:

  1. 一个查询来查找结果的计数。
  2. 选择查询将 (rownumber % count) 作为一个值,以便具有相同余数的所有行都在一个组中。
于 2012-09-11T12:09:04.333 回答
-1

看看 这个。当首先与 mysql 问题堆栈时,您可以使用此站点。

于 2012-09-11T12:17:12.783 回答