2017-09-21 105 views
1
select 
logs.uid, 
logs.event_value 

from publicview.treasurehunters_ok logs 
left join public.app_ok_cbaiodclebabababa_agg_users users on logs.uid=users.uid 
where first_event_time>='01.09.2017 0:00:00' 
and first_event_time <= '11.09.2017 0:00:00' 
and logs.event ='balance_OK' 

我需要每一個UID按時間升序排列和logs.event_value按時間排序的SQL

只留下第一個值,即

uid logs.event_value 
1  10 
1  5 
1  3 

我們只需要 1 10即返回爲每個用戶留下第一行 。 所以有可能使?

+0

提示:'ROW_NUMBER()' –

+0

你可以寫更多detaily,我很牛逼 –

+0

@a_horse_with_no_name,它,S MS SQL –

回答

1

你需要選擇一個唯一的ID,最大日期的權利?您可以通過運行分區,這樣的事情:

select * from (
select 
logs.uid, 
logs.event_value, 
ROW_NUMBER() OVER (PARTITION BY uid ORDER BY first_event_time DESC) r 

from publicview.treasurehunters_ok logs 
left join public.app_ok_cbaiodclebabababa_agg_users users on 
logs.uid=users.uid 
where first_event_time>='01.09.2017 0:00:00' 
and first_event_time <= '11.09.2017 0:00:00' 
and logs.event ='balance_OK') tab 
where r=1 
+0

Tnx,列引用「uid」不明確。有什麼問題 –

+2

@ D.Joe:嘗試'PARTITION BY logs.uid'或'PARTITION BY users.uid'。 – Berger

+0

對不起PARTITION BY logs.uid ORDER BY first_event_time DESC – MiloBellano