【发布时间】:2017-07-12 19:44:05
【问题描述】:
我正在尝试编写一个 Postgres sql,它将在特定时间戳的 30 分钟内为我提供航班。
我的 SQL 看起来像:
"从 lk_merged a 中选择 count(distinct(gufi)) 作为 No_of_airplanes 其中 (a.on_actual 在 (a.on_actual -(20* 间隔 '1 分钟')) 和 (a.on_actual +(40 * 间隔 '1 分钟')) 之间) 按 a.on_actual 分组
请建议如何获得这些飞机数量。
我的表有 gufi 作为飞机 ID,on_actual_timelanding。
我有什么:
gufi(plane_id) , 时间
3432343,12:33:89
2565656,12:44:45
3242234,1:05:23
输出应如下所示,在时间戳前后 20 分钟内有一个新列建议 no_of_planes_around
Gufi(plane_id) , 时间戳 , No_of planes arround
3432343 , 12:33:89, 1
2565656 , 12:44:45 ,2
3242234 ,1:05:23 ,1
如果可能,请在没有自我加入的情况下提出建议。
谢谢 爱太极
【问题讨论】:
-
样本数据和所需的输出会有所帮助
-
您向我们展示了您尝试过的 SQL。你能告诉我们为什么这不起作用,它给你什么,你希望它给你什么?另外,您尝试过的任何其他方法。
-
您好,欢迎来到 Stack Overflow,请花点时间通过 welcome tour 了解您在此处的方式(并获得您的第一个徽章),阅读如何创建 Minimal, Complete, and Verifiable example并检查How to Ask Good Questions,这样您就有机会获得反馈和有用的答案。
-
您正在检查时间戳是否在相对于时间戳本身的区间内,这将始终为真......您应该在 between 运算符中使用另一个时间戳。
-
看起来你在 Go 中编程 :-) 尝试使用这个条件:
between ( a.on_actual - interval '20 minutes' and a.on_actual + interval '40 minutes'。您可以在文本变量中设置边界并执行between ( a.on_actual - variable1::interval and a.on_actual + variable2::interval
标签: sql postgresql