0

SQLで特定の数値で結果をグループ化しようとしています。つまり、60行あり、10行のグループでグループ化する場合は、テーブル内の結果の現在の順序を反映して、10行のグループを6つ作成します(各グループには、そのグループの行)。これを行う方法はありますか?

4

3 に答える 3

2

MS SQLsqlfiddle):

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;

MySQLsqlfiddle):

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. 結果の数を見つけるための1つのクエリ。
  2. 選択クエリには(rownumber%count)が値として含まれるため、残りが同じすべての行が1つのグループに含まれます。
于 2012-09-11T12:09:04.333 に答える
-1

これを見てください 。最初にmysqlの問題とスタックする場合、このサイトを使用できます。

于 2012-09-11T12:17:12.783 に答える