gpt4 book ai didi

SQL每n分钟选择一行

转载 作者:搜寻专家 更新时间:2023-10-30 20:09:37 25 4
gpt4 key购买 nike

我正在使用 Microsoft SQL Server 2008,并且有一个数据集在很长一段时间内每隔几分钟就有一个条目。我正在使用一个程序来绘制数据图表,因此我需要每小时返回大约 20 个值。有时数据是每分钟一次,有时每五分钟一次,有时每 8 或 9 分钟一次,因此每第 n 行选择一次不会随时间均匀分布

例如,对于 2012 年的示例,它看起来像这样:

DateTime
2012-01-01 08:00:10.000
2012-01-01 08:08:35.000
2012-01-01 08:17:01.000
2012-01-01 08:25:26.000

明年的样本看起来像这样:

DateTime
2013-07-20 08:00:00.000
2013-07-20 08:01:00.000
2013-07-20 08:02:00.000
2013-07-20 08:03:00.000
2013-07-20 08:04:00.000

目前我正在使用这样的语句:

SELECT * FROM [Master]
WHERE (((CAST(DATEPART(hour, DateTime)as varchar(2)))*60)
+CAST(DATEPART(minute, DateTime)as varchar(2))) % '5' = '0'

ORDER BY DateTime

这在 2013 年 7 月工作正常,但我错过了 2012 年的大部分时间,因为它返回了这个

DateTime
2012-01-01 08:00:10.000
2012-01-01 08:25:26.000
2012-01-01 08:50:43.000
2012-01-01 09:15:59.000
2012-01-01 10:40:14.000
2012-01-01 11:05:30.000

有什么更好的方法可以做到这一点?

编辑:该表有一个 DateTime 列和一个压力列,我需要根据日期和时间输出两者和图形压力。

最佳答案

因为它们在几个小时内是随机的,所以这应该可以满足您的需要:

Declare @NumberPerHour Int = 20

;With Cte As
(
Select DateTime, Row_Number() Over (Partition By DateDiff(Hour, 0, DateTime) Order By NewId()) RN
From Master
)
Select DateTime
From Cte
Where RN <= @NumberPerHour
Order By DateTime Asc

这将按小时对行进行分组,并为它们分配一个随机的 Row_Number ID,并且只提取 Row_Number 小于您正在查找的数字的行每小时。

关于SQL每n分钟选择一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24957572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com