如何在特定日期之间的日期上进行 SQL 连接?

mik*_*ton 3 google-bigquery

这可能非常困难,也可能非常简单,我不知道是哪个,但我被卡住了。

如何加入特定日期之间发生的数据?我该怎么写?棘手的是每一行都有不同的时间段,每个用户都有一个独特的时间段。例子:

表A 在此处输入图片说明

表B

在此处输入图片说明

表C(我想要的那个)

在此处输入图片说明

如果有人想知道,我正在使用 Google BigQuery

Mik*_*ant 5

下面是 BigQuery 标准 SQL(请参阅启用标准 SQL

SELECT 
  a.User_Id, Start_date, End_Date, 
  (SELECT IFNULL(SUM(clicks),0) FROM TableB WHERE user_Id = a.User_Id 
  AND date BETWEEN Start_date AND End_date) AS Clicks_from_tableB
FROM TableA AS a
ORDER BY user_Id
Run Code Online (Sandbox Code Playgroud)

或者

SELECT 
  a.User_Id, Start_date, End_Date, 
  SUM(IFNULL(clicks, 0))  AS Clicks_from_tableB
FROM TableA AS a
LEFT JOIN TableB AS b
ON a.User_Id = b.User_Id
AND b.date BETWEEN Start_date AND End_date
GROUP BY 1, 2, 3
ORDER BY user_Id
Run Code Online (Sandbox Code Playgroud)