Oracle中的over(partitionby...)分析函数及开窗函数

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: |||超大  

假设有一张表student

Name Score InsertTime (Name:姓名 Score:成绩 InsertTime:考试时间)

张三 20 2015-08-08

李四 122015-09-01

小Q 33 2015-09-03

张三 20 2015-09-08

李四 122015-07-01

小Q 25 2015-06-03

现在要求每个人按照考试时间的先后顺序进行排序,请写出Oracle语句

答:

select row_number() over(partition by name order by inserttime) row_number,student.* from student

解释:

partition by 根据名字先进行分组,order by 在根据inserttiom进行排序

结果

张三 20 2015-08-08

张三 20 2015-09-08

李四 122015-07-01

李四 122015-09-01

小Q 25 2015-06-03

小Q 33 2015-09-03

这种方法可以灵活应用。比如取每个分组中的最新数据或者第一条数据

select row_number() over(partition by name order by inserttime) row_number,student.* from student where row_number=1

张三 20 2015-08-08

李四 122015-07-01

小Q 25 2015-06-03

有问题直接留言 第一时间回复

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航