首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

怎么分组并取得最新值

2012-04-01 
如何分组并取得最新值有这样一个表:里面有三个字段:座位、姓名和呼叫时间。不同的人在不同的时间可以座在不

如何分组并取得最新值
有这样一个表:里面有三个字段:座位、姓名和呼叫时间。不同的人在不同的时间可以座在不同的座位,而且在任何时刻都可以按座位上的呼叫器,因此,记录就可能如下表

座位 姓名 呼叫时间
01 张三 5:00
01 李四 7:00
02 张三 7:00
02 王五 8:00

问:
我如何设计一条SQL语句,去检索每个座位最后一次呼叫的详细信息?
上面的检索结果应该是

座位 姓名 呼叫时间
01 李四 7:00  
02 王五 8:00

[解决办法]

SQL code
select 座位 ,姓名 ,呼叫时间 from(select 座位 ,姓名 ,呼叫时间, row_number(partition by 座位 order by 呼叫时间 desc) rn) where rn=1
[解决办法]
……错了
SQL code
select 座位 ,姓名 ,呼叫时间 from(select 座位 ,姓名 ,呼叫时间,row_number() over(partition by 座位 order by 呼叫时间 desc) rn) where rn=1
[解决办法]
SQL code
select t.* from tb t where 呼叫时间 = (select max(呼叫时间) from tb where 座位 = t.座位)select t.* from tb t where not exists (select 1 from tb where 座位 = t.座位 and 呼叫时间 > t.呼叫时间)
[解决办法]
SQL code
select * from table where (座位,呼叫时间) in (select 座位,max(呼叫时间) from table group by 座位); 

热点排行