鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ SQL中g(shù)roup by分組中如何在有2個(gè)字段值不同的情況下只按其中一個(gè)來(lái)取數(shù)

SQL中g(shù)roup by分組中如何在有2個(gè)字段值不同的情況下只按其中一個(gè)來(lái)取數(shù)

表:
ID name value time
1 A 3 2018-1-1
1 A 4 2018-4-4
2 B 6 2018-1-2
3 C 7 2018-1-3
3 C 9 2018-4-6

如何按照ID分組,并且只取相同ID和name下時(shí)間(time)最近的值:

如:

ID name value time
1 A 4 2018-4-4
2 B 6 2018-1-2
3 C 9 2018-4-6

回答
編輯回答
乖乖瀦

pg如果不支持分區(qū)函數(shù)的話,就多關(guān)聯(lián)幾次表吧,如:

select id, name, time, max(value)
from t inner join (
select id, name, max(time) as max_time
from t
group by id, name
) t1 on t.id = t1.id and t.name = t1.name and t.time=t1.max_time
group by id, name, time
2018年7月31日 19:41
編輯回答
貓館

select * from(
select id, name, value,ROW_NUMBER() OVER(PARTITION BY a.id,name ORDER BY a.time DESC) as num
from table a
) b
where b.num = 1

2018年9月13日 16:14