所以我有一张购买表:
USER_ID
purchase_time
达
我在网站上有一个用户活动表:
USER_ID
位置
browse_time
如何使用活动表加入购买表以获取最新的browse_time活动而无需超过purchase_time?
例如,如果我有购买表:
user_id Purchase_time amount
------- ------------------- ------
1 2012-12-13 12:30:00 $20
2 2012-12-14 23:00:00 $50
我有活动表:
user_id browse_time location
------- ----------- ---------
1 2012-12-14 23:00:00 Product 3
1 2012-12-13 12:00:00 Product 1
1 2012-12-13 11:30:00 Product 2
2 2012-12-15 00:00:00 Product 5
2 2012-12-14 22:30:00 Product 7
2 2012-12-14 20:00:00 Product 6
我想得到以下输出:
user_id purchase_time browse_time location amount
------- ----------------- --------------- ---------- -------
1 2012-12-13 12:30:00 2012-12-13 12:00:00 Product 1 $20
2 2012-12-14 23:00:00 2012-12-14 22:30:00 Product 7 $50
我尝试了mysql语法,但它没有用。我知道bigquery不允许“<”或“>”对于“on”的连接语句。那么甚至可以在Big Query中做到这一点吗?
答案 0 :(得分:1)
所以如果你做这样的事情,你会得到比你想要的更多的结果:
SELECT
user_id
purchase_time
browse_time
location
amount
FROM
purchases pur
JOIN
user_activities uav
ON
pur.user_id = uav.user_id
你想要最近的user_activities,所以让我们在连接的右边做一个子查询:
SELECT
user_id
purchase_time
browse_time
location
amount
FROM
(SELECT
user_id AS user_id
location AS location
MAX(browse_time) AS browse_time
FROM
purchases
GROUP BY user_id,location) pur
JOIN
user_activities uav
ON
pur.user_id = uav.user_id
我希望这可以帮助您解决问题。