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 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.
分享到:
相关推荐
Sqlserver 获取每组中的第一条记录 在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面、功能下面,从数据库...下面给大家介绍oracle查询取出每组中的
FIRST_VALUE :返回组中数据窗口的第一个值 LAST_VALUE :返回组中数据窗口的最后一个值。 LAG :可以访问结果集中的其它行而不用进行自连接 LEAD :LEAD与LAG相反,LEAD可以访问组中当前行之后的行 ROW_NUMBER :...
一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭...
REGEXP_SUBSTR函数格式如下: ...occurrence :标识第几个匹配组,默认为1 modifier :模式(‘i’不区分大小写进行检索;’c’区分大小写进行检索。默认为’c’) SELECT REGEXP_SUBSTR('123,,,ABC,!@#,,,', '[^,]
假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的...
1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>sqlplus SQL>connect internal SQL>startup SQL>quit b、关闭ORACLE系统 oracle>sqlplus SQL>...
以上两个SQL中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,第一条SQL的dy_dj = '1KV以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,在进行第一条SQL的...
全书压缩打包成2部分,这是第1部分。 注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的童鞋可自由匹配查找。 内容简介 《PHP开发实战1200例》分为...
目录: 第1篇 基础篇 第1章 开发环境 2 1.1 AppServ——PHP集成化安装包 3 实例001 通过AppServ配置PHP开发环境 3 实例002 AppServ应用技巧 6 实例003 第1个PHP程序 7 1.2 XAMPP——PHP集成化安装包 8 实例004 通过...
在本文第一段代码中有一句话如下: cursor c_emp is select * from employee where emp_id=3; 其含义是定义一个游标c_emp,代表employee表中所有emp_id字段为3的结果集。 当需要操作该结果集时,必须完成三步:...
1、将安装盘第一张放入光驱; 重启小型机选择主控台,按屏幕上提示的数字;选择语言,一般选english;选择3进入维护模式(start maintenence mode for system recovery); 选择1进入access a root volume group;选择0进入...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 ...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add...
在本文第一段代码中有一句话如下: cursor c_emp is select * from employee where emp_id=3; 其含义是定义一个游标c_emp,代表employee表中所有emp_id字段为3的结果集。当需要操作该结果集时,必须完成三步:打开...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 4、请写...