Mysql 如何从每12小时发生的每个“组”事件中提取第一个时间戳
假设我们有一个包含两列的表:station_id和timestamp。我安装了两个站点,它们被设置为大约每12小时传输一次天气变化。那些小溪流了几分钟 让我们以这张表为例:Mysql 如何从每12小时发生的每个“组”事件中提取第一个时间戳,mysql,sql,apache-spark,Mysql,Sql,Apache Spark,假设我们有一个包含两列的表:station_id和timestamp。我安装了两个站点,它们被设置为大约每12小时传输一次天气变化。那些小溪流了几分钟 让我们以这张表为例: station_id timestamp ---------------------------------- station_1 2019-06-02 09:01:10 station_1 2019-06-02 09:01:13 station_1 2019-06-02 21
station_id timestamp
----------------------------------
station_1 2019-06-02 09:01:10
station_1 2019-06-02 09:01:13
station_1 2019-06-02 21:05:10
station_1 2019-06-02 21:08:15
station_2 2019-06-02 09:30:10
station_2 2019-06-02 09:31:10
station_2 2019-06-02 21:40:11
station_2 2019-06-02 21:40:12
我的目标是分析流数据,并检查我的两条流是否都正常地流。我说的定期是指每12小时
输出应该如下所示
station_id timestamp
----------------------------------
station_1 2019-06-02 09:01:10
station_1 2019-06-02 21:05:10
station_2 2019-06-02 09:30:10
station_2 2019-06-02 21:40:11
我只考虑了一天,但它应该能够处理几天的数据
我想我需要以某种方式按站点id和间隔分组,只显示间隔开始时间戳,我想你只需要滞后。大概是这样的:
select t.*
from (select t.*,
lag(timestamp) over (partition by station order by timestamp) as prev_timestamp
from t
) t
where prev_timestamp is null or
prev_timestamp < timestamp - interval 11 hour;
这需要11个小时而不是12个小时,以便为重复测量提供一定的余地
请注意,日期/时间函数因数据库而异。以上内容在MySQL中工作。在另一个数据库中可能会稍有不同。我想您只是想要延迟。大概是这样的:
select t.*
from (select t.*,
lag(timestamp) over (partition by station order by timestamp) as prev_timestamp
from t
) t
where prev_timestamp is null or
prev_timestamp < timestamp - interval 11 hour;
这需要11个小时而不是12个小时,以便为重复测量提供一定的余地
请注意,日期/时间函数因数据库而异。以上内容在MySQL中工作。在另一个数据库中可能会略有不同。我想我不太明白您要返回的是什么。@草莓对不起,如果我不够清楚的话。我的目标是每隔几分钟进行一次streamers interval(每12小时一次),从该时间间隔中提取第一行流数据,并在tableau中显示。如果我在图表上看到某个站点在某个时间的值,这意味着该站点做了它应该做的工作。我想我真的不明白你想返回的是什么。@草莓对不起,如果我不够清楚的话。我的目标是每隔几分钟进行一次streamers interval(每12小时一次),从该时间间隔中提取第一行流数据,并在tableau中显示。如果我在图表上看到某个站点在某个时间的值,这意味着该站点完成了它应该完成的工作。感谢您的快速回答,我在SQL方面没有我应该的那么熟练。作为一名学生,我还没有使用滞后函数。我会尽快看一看。我随机决定给谁贴标签。我会更深入地研究你的解决方案。@stevo92。没有可比性。lag是实现这一点的正确方法,而不是自连接。感谢您的快速回答,我在SQL方面没有我应该精通的那么多。作为一名学生,我还没有使用滞后函数。我会尽快看一看。我随机决定给谁贴标签。我会更深入地研究你的解决方案。@stevo92。没有可比性。lag是实现这一点的正确方法,而不是自连接。