oracle查询:取出每组中的第一条记录
2016-12-26 15:08
399 查看
Oracle查询:取出每组中的第一条记录
按type字段分组,code排序,取出每组中的第一条记录
方法一:
select type,min(code) from group_info
group by type;
注意:select 后面的列要在group by 子句中,或是用聚合函数包含,否则会有语法错误。
方法二:
SELECT * FROM(
SELECT z.type , z.code ,ROW_NUMBER()
OVER(PARTITION BY z.type ORDER BY z.code) AS code_id
FROM group_info z
)
WHERE code_id =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
before the analytic functions are processed. Therefore, analytic functions can appear only in the select list or
语法结构:
其中analytic_clause结构包括:
也就是:函数名( [ 参数 ] ) over( [ 分区子句 ] [ 排序子句 [ 滑动窗口子句 ] ])
这里PARTITION BY 引导的分区子句类似于聚组函数中的group by,排序子句可看成是select语句中的order by.
按type字段分组,code排序,取出每组中的第一条记录
方法一:
select type,min(code) from group_info
group by type;
注意:select 后面的列要在group by 子句中,或是用聚合函数包含,否则会有语法错误。
方法二:
SELECT * FROM(
SELECT z.type , z.code ,ROW_NUMBER()
OVER(PARTITION BY z.type ORDER BY z.code) AS code_id
FROM group_info z
)
WHERE code_id =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
BYclause. All joins and all
WHERE,
GROUP
BY, and
HAVINGclauses are completed
before the analytic functions are processed. Therefore, analytic functions can appear only in the select list or
ORDER
BYclause.
语法结构:
analytic_function ([ arguments ]) OVER (analytic_clause)
其中analytic_clause结构包括:
[ query_partition_clause ] [ order_by_clause [ windowing_clause ] ]
也就是:函数名( [ 参数 ] ) over( [ 分区子句 ] [ 排序子句 [ 滑动窗口子句 ] ])
这里PARTITION BY 引导的分区子句类似于聚组函数中的group by,排序子句可看成是select语句中的order by.
相关文章推荐
- 160805、oracle查询:取出每组中的第一条记录
- oracle查询:取出每组中的第一条记录
- oracle查询:分组查询,取出每组中的第一条记录
- oracle查询:取出每组中的第一条记录
- 160804、oracle查询:取出每组中的第一条记录
- oracle查询:分组查询,取出每组中的第一条记录
- oracle查询:取出每组中的第一条记录
- oracle查询:取出每组中的第一条记录
- oracle分组查询第一条记录和每组的个数
- oracle相关:如何取出每组中的第一条记录
- oracle取出每组中的第一条记录
- SQL查询每组第一条数据记录
- ORACLE 分组排序取每组的第一条记录
- sql 分组后按时间降序排列再取出每组的第一条记录
- Oracle 分组后取每组的第一条记录
- SQL 查询每组的第一条记录
- (oracle/mysql)查询出分组查询每组的第一条数据
- 取出分组后每组的第一条记录(不用group by)按时间排序---转
- 查询分组中每组第一条记录组成的表
- Oracle分组查询取每组排序后的前N条记录