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

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

  • 相关阅读:
    CF1329A Dreamoon Likes Coloring(贪心)
    CF1330B Dreamoon Likes Permutations
    AcWing338 计数问题(数位dp)
    AcWing311 月之谜(数位dp)
    AcWing310 启示录(数位dp)
    CF1332E Height All the Same(数学)
    CF1332D Walk on Matrix(构造)
    CF1332C K-Complete Word(思维)
    js作用域
    js原型链笔记
  • 原文地址:https://www.cnblogs.com/ouyangfu/p/4800989.html
Copyright © 2011-2022 走看看