SELECT * FROM(
SELECT t.type , t.money ,ROW_NUMBER() OVER(PARTITION BY t.type ORDER BY t.time) AS temp
FROM table1 t
)
WHERE temp =1;
这里涉及到的over()是oracle的分析函数
参考sql reference文档:
Analytic functions compute an aggregate value based on a group
of rows. They differ from aggregate functions in that they return
multiple rows for each group.
Analytic functions are the last set of operations performed in
a query except for the final ORDER BY clause. All joins and all
WHERE , GROUP BY , and HAVING clauses are completed before the
analytic functions are processed. Therefore, analytic functions can
appear only in the select list or ORDER BY clause.
语法结构:
analytic_function ([ arguments ]) OVER
(analytic_clause)
其中analytic_clause结构包括:
[ query_partition_clause ]
[ order_by_clause [ windowing_clause ] ]
也就是:函数名( [ 参数 ] ) over( [ 分区子句 ] [ 排序子句 [ 滑动窗口子句 ] ])
这里PARTITION BY 引导的分区子句类似于聚组函数中的group
by,排序子句可看成是select语句中的order by.