有没有办法在 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 中每分钟只选择第一项?的主要内容,如果未能解决你的问题,请参考以下文章