SQLで特定の数値で結果をグループ化しようとしています。つまり、60行あり、10行のグループでグループ化する場合は、テーブル内の結果の現在の順序を反映して、10行のグループを6つ作成します(各グループには、そのグループの行)。これを行う方法はありますか?
質問する
115 次
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つのクエリ。
- 選択クエリには(rownumber%count)が値として含まれるため、残りが同じすべての行が1つのグループに含まれます。
于 2012-09-11T12:09:04.333 に答える
-1
これを見てください 。最初にmysqlの問題とスタックする場合、このサイトを使用できます。
于 2012-09-11T12:17:12.783 に答える