如何在ORACLE中筛选出所有人的最后一条记录?
有表T1姓名分值时间戳张三802011-03-0111:11:00张三702011-03-0213:10:00张三772011-03-0421:00:00李四782011...
有表T1
姓名 分值 时间戳
张三 80 2011-03-01 11:11:00
张三 70 2011-03-02 13:10:00
张三 77 2011-03-04 21:00:00
李四 78 2011-03-02 10:11:00
李四 88 2011-03-12 19:41:00
王五 90 2011-03-12 19:41:00
赵六 87 2011-03-01 11:11:00
我想要把所有人最近的一条记录筛选出来变成这样的结果:
姓名 分值 时间戳
张三 77 2011-03-04 21:00:00
李四 88 2011-03-12 19:41:00
王五 90 2011-03-12 19:41:00
赵六 87 2011-03-01 11:11:00
请问SQL语句该如何写?急!!! 展开
姓名 分值 时间戳
张三 80 2011-03-01 11:11:00
张三 70 2011-03-02 13:10:00
张三 77 2011-03-04 21:00:00
李四 78 2011-03-02 10:11:00
李四 88 2011-03-12 19:41:00
王五 90 2011-03-12 19:41:00
赵六 87 2011-03-01 11:11:00
我想要把所有人最近的一条记录筛选出来变成这样的结果:
姓名 分值 时间戳
张三 77 2011-03-04 21:00:00
李四 88 2011-03-12 19:41:00
王五 90 2011-03-12 19:41:00
赵六 87 2011-03-01 11:11:00
请问SQL语句该如何写?急!!! 展开
5个回答
展开全部
SELECT 姓名, 分值, 时间戳
FROM (SELECT 姓名, 分值, 时间戳, ROW_NUMBER() OVER(PARTITION BY 姓名 ORDER BY 时间戳 DESC) rk
FROM T1) tab1
WHERE rk = 1
FROM (SELECT 姓名, 分值, 时间戳, ROW_NUMBER() OVER(PARTITION BY 姓名 ORDER BY 时间戳 DESC) rk
FROM T1) tab1
WHERE rk = 1
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from (select * from scott.emp order by rownum desc) where rownum <=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试这个:
SELECT T1.* FROM T1 RIGHT INNER JOIN (SELECT username, MAX(timestamp) AS tm FROM T1 GROUP BY username) T2 ON T1.username = T2.username AND T1.timestamp = T2.tm
SELECT T1.* FROM T1 RIGHT INNER JOIN (SELECT username, MAX(timestamp) AS tm FROM T1 GROUP BY username) T2 ON T1.username = T2.username AND T1.timestamp = T2.tm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT * FROM(SELECT T.*,RANK() OVER(PARTITION BY 姓名 ORDER BY T.时间戳 DESC) RK FROM T1 T) WHERE RK <=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询