2

だから私は購入の表を持っています: user_id
Purchase_time amount


そして、私はウェブサイト上のユーザー活動の表を持っています :
user_id
locationbrowse_time

PurchasesテーブルをActivitiesテーブルと結合して、purchase_timeを超えずに最新のbrowse_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でそれを行うことさえ可能ですか?

4

1 に答える 1

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

これが問題の解決に役立つことを願っています。

于 2013-01-01T14:55:01.560 に答える