select *
from (select no =row_number() over (partition by userid order by id asc), * from User_Per_Train)t
where no< 2
ROW_NUMBER()用法
ROW_NUMBER()说明:返回结果集分区内行的序列号,每个分区的第一行从 1 开始。语法:
ROW_NUMBER () OVER ( [ <partition_by_clause> ] <order_by_clause> ) 。备注:ORDER BY
子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。参数:<partition_by_clause> :
将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。 <order_by_clause>:
确定将 ROW_NUMBER 值分配给分区中的行的顺序。返回类型:bigint 。
OVER(PARTITION BY)函数
介绍开窗函数
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某
种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一
行。 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变
化而变化,举例如下:1:over后的写法: over(order by salary) 按照salary排序进
行累计,order by是个默认的开窗函数 over(partition by deptno)按照部门分区 over
(partition by deptno order by salary) 2:开窗的窗口范围:over(order by salary
range between 5 preceding and 5 following):窗口范围为当前行数据幅度减5加5后的范围内
的。