4
我有一個紅移的需求,如果數據是連續的,我需要合併結果。我有下面的表,其中user_id,product_id是varchar和login_time,log_out_time是時間戳。紅移查詢合併結果,如果數據連續在一個表內
user_id product_id login_time log_out_time
----------------------------------------------------------------------
ashok facebook 1/1/2017 1:00:00 AM 1/1/2017 2:00:00 AM
ashok facebook 1/1/2017 2:00:00 AM 1/1/2017 3:00:00 AM
ashok facebook 1/1/2017 3:00:00 AM 1/1/2017 4:00:00 AM
ashok linked_in 1/1/2017 5:00:00 AM 1/1/2017 6:00:00 AM
ashok linked_in 1/1/2017 6:00:00 AM 1/1/2017 7:00:00 AM
ashok facebook 1/1/2017 8:00:00 AM 1/1/2017 9:00:00 AM
ram facebook 1/1/2017 9:00:00 AM 1/1/2017 10:00:00 AM
ashok linked_in 1/1/2017 7:00:00 AM 1/1/2017 8:00:00 AM
我需要的,如果該數據爲每個產品指定USER_ID連續的結果結合起來。所以,我的輸出應該看起來像,
user_id product_id login_time log_out_time
----------------------------------------------------------------------
ashok facebook 1/1/2017 1:00:00 AM 1/1/2017 4:00:00 AM
ashok facebook 1/1/2017 8:00:00 AM 1/1/2017 9:00:00 AM
ashok linked_in 1/1/2017 5:00:00 AM 1/1/2017 8:00:00 AM
ram facebook 1/1/2017 9:00:00 AM 1/1/2017 10:00:00 AM
我用下面的查詢嘗試,但它並沒有幫助我,
SELECT user_id, product_id, MIN(login_time), MAX(log_out_time) FROM TABLE_NAME GROUP BY user_id, product_id
上面的查詢沒有給我所需的輸出,因爲它不具備檢查數據的邏輯是連續的。我需要爲此查詢而不使用任何自定義函數,但是我可以使用任何紅移內置函數。
您的查詢沒有給出所需的輸出。如果我運行上面的查詢,它會給出相同的源表。我只是交換0和1,在這種情況下,它產生三行,但它不是所需的輸出。對於行ashok&臉書我得到單行作爲'ashok,facebook,2017/1/1 1:00:00,2017/1/1 4:00:00',但需要的輸出是'ashok,臉譜, 2017/1/1 1:00:00,2017年1月1日4:00:00,\ n ashok,facebook,2017/1/1 8:00:00 AM,2017/1/1 9:00 :00 AM'。需要的輸出在問題中可用,請看看。 – ashokramcse
@ashokramcse。 。 。我的登錄/註銷時間相反。該查詢需要將當前登錄時間與以前的登出時間(現在正在執行的操作)進行比較。 –
是你編輯的答案解決了我的謎團。順便說一句,你真是個天才!!! – ashokramcse