【问题标题】:Is there a way to select only the first item each min in SQL?有没有办法在 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 版本?

标签: mysql sql date greatest-n-per-group


【解决方案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;

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2015-04-15
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    相关资源
    最近更新 更多