我们已请求向外部公司提供一些数据。
他们只需要一个数据样本,简单吗?错误的。
这是他们的抽样标准:
请有人告诉我在SQL中如何(如果)可能发生这种情况。
最佳答案
如果您使用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
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
关于SQL数据采样,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9413371/