gpt4 book ai didi

SQL : How to query selecting only first row in every hour?

转载 作者:行者123 更新时间:2023-12-04 23:43:10 24 4
gpt4 key购买 nike

我试图找到如何从每分钟将数据记录到数据库的记录设备中选择每小时的第一行。

我的示例数据:

Val     Date_time
1734618 2017-06-09 14:01:04
1734609 2017-06-09 14:00:05
1734601 2017-06-09 13:59:04
1734593 2017-06-09 13:58:04
...
1734127 2017-06-09 13:02:04
1734119 2017-06-09 13:01:04
1734111 2017-06-09 13:00:05
1734103 2017-06-09 12:59:04

我的问题是我不知道如何每小时只从时间数据中查询第一行,而且我不知道为什么我不能在 中使用 DATE_FORMAT() 函数Microsoft SQL 服务器管理 自动完成文本建议中根本没有此功能。我发现这个每分钟选择一次它对我不起作用,因为仅没有 DATE_FORMAT() 函数。
SELECT * 
FROM table
WHERE Date_time IN ( SELECT MIN(Date_time) AS Date_time
FROM table
GROUP BY DATE_FORMAT(Date_time,'%Y-%m-%d %H:%i'))

我的示例输出:2 行
Val     Date_time
1734609 2017-06-09 14:00:05
1734111 2017-06-09 13:00:05

任何想法请帮助先生?
非常感谢您的帮助。

编辑:使用 FORMAT() 函数可以工作。

最佳答案

不要使用使用子选择的解决方案,性能会受到影响,并且上面当前的 4 个示例会随着时间的推移给你一个不正确的结果(尝试添加 1734618, '2017-05-09 14:01:04')。这种方法更有效:

SELECT
TOP 1 WITH TIES
*
FROM <yourtable>
ORDER BY
row_number()over
(partition by dateadd(hour, datediff(hour, 0, Date_time),0) ORDER BY Date_time)

关于SQL : How to query selecting only first row in every hour?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44493654/

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