zoukankan      html  css  js  c++  java
  • Oracle中的over(partition by...)分析函数及开窗函数

    假设有一张表student

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

    张三     20    2015-08-08

    李四   12  2015-09-01

    小Q     33      2015-09-03

    张三     20    2015-09-08

    李四   12  2015-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

    李四   12  2015-07-01

    李四   12  2015-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

    李四   12  2015-07-01

    小Q      25      2015-06-03

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

  • 相关阅读:
    存储函数
    Laravel的请求声明周期
    哪只猴子可以当大王
    有多少苹果用来分赃
    SqlDataAdapter使用小结
    主键与外键
    SQL server 操作相关
    C# 窗体相关知识
    C#中winform DataGridView常用修改点
    maven 坐标获取方式
  • 原文地址:https://www.cnblogs.com/ouyangfu/p/4800989.html
Copyright © 2011-2022 走看看