我正在尝试按 sql 中的某个数字对结果进行分组。即,如果我有 60 行并且我想按 10 行分组,我将有 6 组,每组 10 行,反映表中结果的当前顺序(在每组中,我将有该组中的行)。有没有办法做到这一点?
问问题
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
我会这样做:
- 一个查询来查找结果的计数。
- 选择查询将 (rownumber % count) 作为一个值,以便具有相同余数的所有行都在一个组中。
于 2012-09-11T12:09:04.333 回答
-1
看看 这个。当首先与 mysql 问题堆栈时,您可以使用此站点。
于 2012-09-11T12:17:12.783 回答