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查询取出每组中的
这里 `INSTR(data_column, ',', 1)` 找到逗号的第一个位置,然后 `SUBSTR()` 从开始位置1截取到逗号之前的所有字符。 在实际应用中,可能还需要处理更复杂的情况,比如截取最后一个值、处理缺失或多个分隔符的情况...
在检索时,从索引文件取出主键及表名,查询数据库来显示这一条记录的详细信息。 Oracle 全文检索实现的总体架构图由五个部分组成:XML 配置文件、读取器、索引器、索引库和检索器。其中,XML 配置文件存储数据库的...
一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以方便用户进行数据处理和查询。以下是一些在Oracle中常用的函数,这些函数在数据库操作中扮演着重要角色。 1. ASCII函数:ASCII函数...
REGEXP_SUBSTR函数格式如下: ...occurrence :标识第几个匹配组,默认为1 modifier :模式(‘i’不区分大小写进行检索;’c’区分大小写进行检索。默认为’c’) SELECT REGEXP_SUBSTR('123,,,ABC,!@#,,,', '[^,]
主物品定义是创建新物品的第一步,包括基本信息、描述、分类等,是后续所有操作的基础。 #### Define Item Category 物品分类则进一步细化物品的分类,便于管理和检索,同时也影响物品的处理流程。 #### Define ...
写出一条 SQL 语句:取出表 A 中第 31 到第 40 记录 解决方案: * MySQL:`select * from A limit 30, 10` * MS-SQL Server: + 解法 1:`select top 10 * from A where id not in (select top 30 id from A)` +...
- **处理边界情况**:如果找不到更多的分隔符,则默认将`@location`设置为字符串的长度加1,以便正确截取出最后一个子字符串。 - **返回子字符串**:利用`SUBSTRING`函数根据`@start`和`@location`的值截取第n个子...
以上两个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的结果集。 当需要操作该结果集时,必须完成三步:...
这种方法的关键在于,使用序列(如`tableNames_seq`)生成主键值,并通过`UNION`操作合并多条记录。这种方法的优势在于可以有效地管理事务,提高性能,尤其是在插入的数据量巨大时。 总结来说,选择哪种批量插入...
1、将安装盘第一张放入光驱; 重启小型机选择主控台,按屏幕上提示的数字;选择语言,一般选english;选择3进入维护模式(start maintenence mode for system recovery); 选择1进入access a root volume group;选择0进入...
3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 ...