有没有办法在 SQL 中每分钟只选择第一项?

Posted

技术标签:

【中文标题】有没有办法在 SQL 中每分钟只选择第一项?【英文标题】:Is there a way to select only the first item each min in SQL? 【发布时间】:2020-10-16 08:03:23 【问题描述】:

我有一张表,里面有这样的条目

Time                     Value
2020-04-24 9:12:02       $2.50
2020-04-24 9:12:31       $2.52
2020-04-24 9:13:12       $2.56
2020-04-24 9:13:48       $2.51
2020-04-24 9:14:08       $2.51

理想情况下,我只想提取每分钟创建的第一个条目,以便获得这样的表格。

Time                     Value
2020-04-24 9:12:01       $2.50
2020-04-24 9:13:12       $2.56
2020-04-24 9:14:08       $2.51

有没有办法做到这一点。时间被格式化为日期时间

谢谢

【问题讨论】:

您使用的是哪个 mysql 版本? 【参考方案1】:

你可以使用窗口函数:

select t.*
from (select t.*,
             row_number() over (partition by date_format(time, '%Y-%m-%d %H:%i') order by time) as seqnum
      from t
     ) t
where seqnum = 1;

这会将时间格式化为字符串,直到分钟。然后它返回每分钟的第一个值。

【讨论】:

什么是:SELECT substr(Time,1,15) as Time_Column , Value FROM Your_Table GROUP by Time_Column; @AziMez 。 . .如果列存储为datetime,请使用日期/时间函数,而不是字符串函数。【参考方案2】:

试试吧;在SQLite测试。对于SQL Server 使用:SUBSTRING 而不是Substr 函数。

SELECT substr(Time,1,15) as Time_Column , Value FROM Your_Table
GROUP by Time_Column;

【讨论】:

以上是关于有没有办法在 SQL 中每分钟只选择第一项?的主要内容,如果未能解决你的问题,请参考以下文章

选择表中每分钟的第一个值

SQL只选择一项符合条件的项目

Spring Jackson反序列化只选择数组的第一项

无论我选择啥,我的 Web 表单都只插入下拉列表中的第一项

有没有办法在 iOS 中获取分钟和小时的集合/数组?

有没有办法在 UIDatePicker 中删除小时并添加秒?