【问题标题】:Query records that happen during a time interval查询某个时间间隔内发生的记录
【发布时间】:2020-04-25 23:30:49
【问题描述】:

我是 SQL 新手,需要一些帮助来确定每个 [1] 天、[2] 汽车制造商和 [3] 至少有一个阳性的汽车的阳性测试结果计数在给定日期的任何 15 分钟窗口内发生的测试结果。

数据如下:

date (11/12/2018)
time (8:21 AM)
car_marker (Honda, Ford, Toyota)
test_result (positive, negative)

我想要的输出如下所示:

11/14/2018, Honda, 3 positives
12/03/2018, Ford, 5 positives

我在 MySQL 中查询这个。提前感谢您的帮助!

【问题讨论】:

  • 请提供样本数据、期望的结果以及清晰的逻辑解释。

标签: mysql sql group-by count


【解决方案1】:

根据你的cmets,你可以使用lag():

select date, car_maker, count(*)
from (select t*, lag(time) over (partition by car_maker, date order by time) as prev_time
      from t
      where test_result = 'positive'
     ) t
where prev_time > time - interval 15 minute
group by date, car_maker;

【讨论】:

  • 谢谢戈登!区间函数在这里如何工作?根据下面的链接,它会根据大于您要比较的位置的值返回一个整数dev.mysql.com/doc/refman/5.7/en/…
  • @Cle423t 。 . .间隔是日期/时间算术中使用的值。文档实际上并没有很好地解释这一点,但教程可以(mysqltutorial.org/mysql-interval)。为什么这个答案会被否决?
猜你喜欢
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多