如果您使用 ROW_NUMBER(),那么您可以相对轻松地完成此操作。
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER (ORDER BY a, b, c, d) AS record_id,
*
FROM
yourTable
)
AS data
WHERE
(record_id + 360) % 720 = 0
Run Code Online (Sandbox Code Playgroud)
ROW_NUMBER()为所有数据提供一个顺序标识符(这很重要,因为 id 字段必须是唯一的并且没有任何间隙)。它还定义了您想要的数据顺序(ORDER BY a, b, c, d)。
有了这个 id,如果您使用 Modulo(通常是%运算符),您可以测试该记录是否是第 720 条记录、第 1440 条记录等(因为 720 % 720 = 0)。
然后,如果将 id 值偏移 360,则可以更改结果集的起点。
编辑
重新阅读问题后,我发现您并不想要每720条记录,而是统一选择720条记录。
因此,替换720为(SELECT COUNT(*) / 720 FROM yourTable)
并替换360为(SELECT (COUNT(*) / 720) / 2 FROM yourTable)
编辑
忽略舍入条件将得到正好 720 条记录的结果。这需要使用非整数值,并且模数结果小于 1。
WHERE
(record_id + (SELECT COUNT(*) FROM yourTable) / 1440.0)
%
((SELECT COUNT(*) FROM yourTable) / 720.0)
<
1.0
Run Code Online (Sandbox Code Playgroud)