如何实现如下需求
现有用户登录记录明细表user_login,记录部分字段如下:
username login_time
A 2012-9-1
A 2012-9-3
A 2012-9-5
B 2012-9-3
A 2012-9-7
C 2012-9-6
D 2012-9-8
要求用sql执行过后的结果是:
username login_time
B 2012-9-3
A 2012-9-7
C 2012-9-6
D 2012-9-8
以下是在mysql中执行情况,未达到我想要的结果,在oracle中无法实现,还请大侠们指教,谢谢了!!
我写的sql:
select username,login_time from user_login
group by username
结果是:
username login_time
A 2012-9-1
B 2012-9-3
C 2012-9-6
D 2012-9-8
改sql:
select username,login_time from user_login
group by username order by login_time desc
结果是:
username login_time
D 2012-9-8
C 2012-9-6
B 2012-9-3
A 2012-9-1
都不是我想要的结果,该如何实现呢?
[解决办法]
SELECT username,MAX(login_time) FROM user_login GROUP BY username
with user_login as(
select 'A' username,to_date('2012-9-1','yyyy-mm-dd') login_time from dual
union all
select 'A',to_date('2012-9-3','yyyy-mm-dd') from dual
union all
select 'A',to_date('2012-9-4','yyyy-mm-dd') from dual
union all
select 'B',to_date('2012-9-3','yyyy-mm-dd') from dual
union all
select 'A',to_date('2012-9-7','yyyy-mm-dd') from dual
union all
select 'C',to_date('2012-9-6','yyyy-mm-dd') from dual
union all
select 'D',to_date('2012-9-8','yyyy-mm-dd') from dual
)select username,max(login_time) from user_login group by username;
USERNAME MAX(LOGIN_TIME)
-------- ---------------
D 2012/9/8
A 2012/9/7
B 2012/9/3
C 2012/9/6