【发布时间】:2018-10-07 13:14:27
【问题描述】:
我想根据时间戳加入两个表,问题是两个表没有完全相同的时间戳,所以我想使用接近时间戳和 5 分钟间隔加入它们。
这个查询需要使用2个Common table expressions来完成,每个公用表表达式都需要通过AVG得到timestamps和group them这样才能匹配
Freezer | Timestamp | Temperature_1
1 2018-04-25 09:45:00 10
1 2018-04-25 09:50:00 11
1 2018-04-25 09:55:00 11
Freezer | Timestamp | Temperature_2
1 2018-04-25 09:46:00 15
1 2018-04-25 09:52:00 13
1 2018-04-25 09:59:00 12
我想要的结果是:
Freezer | Timestamp | Temperature_1 | Temperature_2
1 2018-04-25 09:45:00 10 15
1 2018-04-25 09:50:00 11 13
1 2018-04-25 09:55:00 11 12
我正在处理的当前查询是:
WITH Temperatures_1 (
SELECT Freezer, Temperature_1, Timestamp
FROM TABLE_A
),
WITH Temperatures_2 (
SELECT Freezer, Temperature_2, Timestamp
FROM TABLE_B
)
SELECT A.Freezer, A.Timestamp, Temperature_1, Temperature_2
FROM Temperatures_1 as A
RIGHT JOIN Temperatures_2 as B
ON A.FREEZER = B.FREEZER
WHERE A.Timestamp = B.Timestamp
【问题讨论】:
-
在询问编程问题时请注意您选择的词语。您要求使用“使用 5 分钟间隔的最近时间戳”。然后你说你希望“9:59”加入“9:55”,而“9:59”的最近 5 分钟间隔实际上是“10:00”。请重新措辞您的问题,以准确说明您要达到的目标。我什至不想考虑“按 AVG 对它们进行分组以便它们可以匹配”可能意味着什么。这根本没有意义。
-
这与您之前标记为已回答的问题有何不同?
-
是的,这是一个不同的问题,在上一个问题中我只想得到间隔,现在我正在做 2 个不同的 CTE,我想使用 AVG 功能
-
您在哪里尝试使用 AVG,您遇到了什么错误?你想 AVG 做什么?
标签: sql sql-server group-by timestamp average