LOOP GROUP BY 分组循环的使用方法

1.格式:

  LOOP AT 内表  INTO DATA(工作区)  GROUP BY ( 字段  = 工作区-字段
                                   size  = GROUP SIZE  "分组组数--
                                   index = GROUP INDEX ) "分组的组序号
  ASCENDING    ASSIGNING FIELD-SYMBOL(<组>).

  LOOP AT GROUP <组> ASSIGNING FIELD-SYMBOL(<指针>).
     "对指针进行操作,和普通的loop循环相似
  ENDLOOP.

ENDLOOP.
2.简而言之:就是第一个loop循环是把内表进行分组,第二loop循环是把组里的数据循环读出来进行修改判断等操作。
3.可以替代AT END OF /AT NEW OF。
4.具体实例-复制就能用

TYPES: BEGIN OF ty_employee,
         name TYPE char30,
         role TYPE char30,
         age  TYPE i,
         sex  TYPE char10,
       END OF ty_employee,
       ty_employee_t TYPE STANDARD TABLE OF ty_employee WITH KEY name.

"对内表进行赋值"
DATA(gt_employee) = VALUE ty_employee_t(
( name = 'John'     role = 'ABAP'       age = 34  sex =  'MAN'   )
( name = 'Alice'     role = 'FI Consultant'   age = 42  sex =  'WOMAN'  )
( name = 'Barry'    role = 'ABAP'       age = 54   sex =  'WOMAN'  )
( name = 'Mary'     role = 'FI Consultant'   age = 37  sex =  'WOMAN' )
( name = 'Arthur'   role = 'ABAP'       age = 34  sex =  'MAN'  )
( name = 'Mandy'   role = 'SD Consultant'     age = 64  sex =  'MAN'  ) ).

DATA: gv_tot_age TYPE i,
      gv_avg_age TYPE decfloat34.
"通过角色进行分组"
LOOP AT gt_employee INTO DATA(ls_employee) GROUP BY ( role  = ls_employee-role
                                           size  = GROUP SIZE  "分组组数"
                                           index = GROUP INDEX ) "分组的组序号"
  ASCENDING    ASSIGNING FIELD-SYMBOL(<group>).

  CLEAR: gv_tot_age.
  WRITE: / | 组序号: { <group>-index }    角色: { <group>-role WIDTH = 15 }|
              & |     这个组有几条数据: { <group>-size  } |.

  "loop循环组,将组里的数据读出来"
  LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<ls_member>).
    gv_tot_age = gv_tot_age + <ls_member>-age.
    WRITE: /13 <ls_member>-name .
  ENDLOOP.

  gv_avg_age = gv_tot_age / <group>-size.
  WRITE: / |组平均年龄: { gv_avg_age }|.
  SKIP.
ENDLOOP.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Oracle Database 11g初学者指南》能使读者快捷地掌握Oracle Database 11g的基础知识。通过自我评估教程,介绍了核心数据库技术、管理员职责、高可用性以及大型数据库特性。《Oracle Database 11g初学者指南》带领读者循序渐进地学习数据库设置、管理、编程、备份和恢复。还深入介绍了SQL和PL/SQL。为了易于学习,这本独特的Oracle Press指南是这样组织的: 核心概念——Oracle Database 11g主题呈现在按逻辑组织的章节中 主要内容——每章要介绍的具体内容列表 实践练习——演示如何应用在每章学到的关键技术 学习效果测试——对学习效果的快速自我评估 注意——与所介绍主题相关的额外信息 章节测验——每章结束时的测验测试读者对所学知识的掌握程度。 目录 第1章 数据库基础 1.1 数据库定义 1.2 Ofacle Database 11g的体系结构 1.2.1 控制文件 1.2.2 联机重做日志 1.2.3 System表空间 1.2.4 Sysaux表空间 1.2.5 默认的临时表空间 1.2.6 Undo表空间 1.2.7 服务器参数文件 1.2.8 后台进程 1.2.9 数据库管理员 1.3 Oracle Database 11g的基本数据类型 1.3.1 varchar2 1.3.2 数字 1.3.3 日期 1.3.4 时间戳 1.3.5 clob 1.3.6 blob 1.4 表 1.5 存储对象 1.5.1 视图 1.5.2 触发器 1.5.3 过程 1.5.4 函数 1.5.5 包 1.6 Oracle Database 11g的其他重要内容 1.6.1 索引 1.6.2 用户 1.6.3 表空间配额 1.6.4 同义词 1.6.5 角色 1.6.6 默认用户环境 1.7 对象和系统权限 1.7.1 select 1.7.2 insen 1.7.3 update 1.7.4 delete 1.7.5 系统权限 1.8 网格 1.9 综述 1.10 本章测验 第2章 Oracle安装 2.1 安装研究和安装计划 2.1.1 确定系统需求 2.1.2 Linux安装 2.2 操作系统设置 2.3 Linux简介 2.4 选择安装组件 2.5 安装Oracle软件 2.5.1 数据库配置助手 2.5.2 验证安装 2.6 综述 2.7 本章测验 第3章 OFacle网络连接 3.1 使用Omcle Net Services 3.1.1 网络协议 3.1.2 优化网络带宽 3.1.3 连接 3.1.4 保持连接 3.1.5 定义一个位置 3.2 专用和共享服务器体系结构之间的差别 3.2.1 专用服务器 3.2.2 共享服务器 3.2.3 设置分派进程 3.2.4 监视共享服务器的视图 3.3 定义连接 3.3.1 连接描述符 3.3.2 定义连接描述符 3.3.3 Oracle连接管理器 3.3.4 会话多路复用 3.3.5 防火墙访问控制 3.4 使用Oracle Net Listener 3.4.1 密码验证 3.4.2 多个监听进程 3.4.3 连接池 3.5 命名方法 3.5.1 目录命名方法 3.5.2 目录信息树 3.5.3 标识名 3.5.4 如何查找目录命名信息 3.5.5 网络服务别名条目 3.5.6 本地命名方法 3.5.7 简单命名方法 3.5.8 外部命名方法 3.5.9 使用哪种命名方法 3.6 使用Oracle配置文件 3.7 使用管理工具 3.7.1 OEM/网格控件 3.7.2 Oracle网络管理器 3.7.3 OEM控制台 3.7.4 OEM组件 3.7.5 Oracle网络配置助手 3.7.6 Oracle网络目录配置助手 3.7.7 命令行实用程序 3.7.8 Oracle高级安全选项 3.7.9 分派进程 3.8 使用配置文件 3.9 多层环境中的网络 3.10 安装Oracle 11g客户端软件 3.11 本章测验 第4章 SQL:结构化查询语言 4.1 SOL语句的组成 4.1.1 DDL 4.1.2 DML 4.2 基本的insert和select语句 4.2.1 insert 4.2.2 select 4.3 简单的where子句 4.3.1 带and/or的where子句 4.3.2 带NOT的where子句 4.3.3 带搜索范围的where子句 4.3.4 带搜索列表的where子句 4.3.5 带模式搜索的where子句 4.3.6 where子句中的常用操作符 4.4 基本的update和delete语句 4.4.1 update语句 4.4.2 delete语句 4.5 数据排序 4.6 函数:字符串函数、数字函数和聚集函数(不是分组) 4.6.1 字符串函数 4.6.2 数字函数 4.6.3 聚集函数 4.7 日期函数(格式化的和按时间排列的) 4.7.1 日期函数 4.7.2 特殊格式的日期数据类型 4.7.3 嵌套函数 4.8 连接(ANSI与Oracle对比):内连接、外连接、自连接 4.8.1 内连接 4.8.2 外连接 4.8.3 自连接 4.9 groupby和having子句 4.9.1 groupby 4.9.2 having 4.10 子查询:简单子查询和带连接的相关比较 4.10.1 简单子查询 4.10.2 带连接的相关子查询 4.11 集合操作符:union、intersect和minus 4.11.1 union 4.11.2 union all 4.11.3 intersect 4.11.4 minus 4.12 视图 4.13 序列 4.14 约束:与实体模型的联系、类型、延迟 4.14.1 与实体模型的联系 4.14.2 类型 4.14.3 延迟 4.15 用SQL*Plus进行格式化输出 4.15.1 页和行大小 4.15.2 页标题 4.15.3 页脚 4.15.4 格式化列 4.15.5 将SQL*Plus输出结果写入文件 4.16 本章 测验 第5章 PL/SQL 5.1 PL/SQL定义和使用PL/SQL的原因 5.2 基本PL/SQL编程结构 5.3 定义PL/SQL数据类型 5.3.1 有效字符集 5.3.2 算术操作符 5.3.3 varchar2类型 5.3.4 数字类型 5.3.5 日期类型 5.3.6 布尔类型 5.4 在SQL*Plus中编写PL/SQL程序, 5.4.1 PL/SQL程序中的SQL 5.4.2 PL/SQL游标 5.4.3 游标For循环 5.5 PL/SQL中的异常处理 5.6 程序中的控制结构 5.6.1 程序控制 5.6.2 IF逻辑结构 5.6.3 CASE语句 5.6.4 Loop循环 5.6.5 WHILE循环 5.6.6 FOR循环 5.7 如何创建存储过程以及创建存储过程的原因 5.8 函数的创建和使用 5.9 调用PL/SQL程序 5.10 本章 测验 第6章 数据库管理员 6.1 了解DBA的工作 6.2 执行日常操作 6.2.1 体系结构和设计 6.2.2 容量规划 6.2.3 备份和恢复 6.2.4 安全 6.2.5 性能和调整 6.2.6 管理数据库对象 6.2.7 存储管理 6.2.8 变化管理 6.2.9 任务调度 6.2.1 0网络管理 6.2.1 1故障排查 6.3 OracleDatabase11g的基础结构 6.3.1 模式 6.3.2 存储结构 6.4 OracleDatabase11g的操作模式 6.4.1 操作模式 6.4.2 数据库和实例关闭 6.5 0EM使用初步 6.5.1 实例配置 6.5.2 用户会话 6.5.3 资源消费者组 6.5.4 模式、安全和存储管理 6.5.5 分布式管理 6.5.6 数据仓库特征 6.5.7 其他工具 6.6 数据库对象管理 6.6.1 控制文件 6.6.2 重做日志 6.6.3 撤消管理 6.6.4 模式对象 6.7 空间管理 6.7.1 归档日志 6.7.2 表空间和数据文件 6.8 用户管理 6.8.1 创建用户 6.8.2 编辑用户 6.9 数据库用户权限管理 6.9.1 授权 6.9.2 角色 6.9.3 配置文件 6.9.4 综述 6.10 本章 测验 第7章 备份与恢复 7.1 Oracle备份和恢复基本原理 7.1.1 从何处着手 7.1.2 备份的体系结构 7.1.3 Oracle二进制文件 7.1.4 参数文件 7.1.5 控制文件 7.1.6 重做日志 7.1.7 撤消段 7.1.8 检查点 7.1.9 归档日志 7.1.10 数据文件、表空间、段、分区和块 7.1.11 转储文件 7.2 0racle用户管理的备份和恢复 7.2.1 用户管理的备份类型 7.2.2 冷备份 7.2.3 热备份 7.2.4 从冷备份中恢复 7.2.5 从热备份中恢复 7.2.6 恢复的7个步骤 7.2.7 用备份控制文件进行恢复 7.3 编写数据库备份脚本 7.4 备份归档重做日志 7.5 Oracle Data Pump简介 …… 第8章 高可用性:RAC、ASM和Data Guand 第9章 大型数据库特性 附录 各章测验答案
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle Database 11g初学者指南 基本信息 原书名: Oracle Database 11g, A Beginner's Guide 原出版社: McGraw-Hill Osborne Media 作者: (美)Ian Abramson    Michael Abbey    Michael Corey 译者: 窦朝晖 出版社:清华大学出版社 ISBN:9787302218937 上架时间:2010-2-20 出版日期:2010 年1月 开本:16开 页码:288 版次:1-1 内容简介   本书能使读者快捷地掌握oracle database 11g的基础知识。通过自我评估教程,介绍了核心数据库技术、管理员职责、高可用性以及大型数据库特性。本书带领读者循序渐进地学习数据库设置、管理、编程、备份和恢复。还深入介绍了sql和pl/sql。为了易于学习,这本独特的oracle press指南是这样组织的:    ·核心概念——oracle database 11g主题呈现在按逻辑组织的章节中    ·主要内容——每章要介绍的具体内容列表    ·实践练习——演示如何应用在每章学到的关键技术    ·学习效果测试——对学习效果的快速自我评估    ·注意——与所介绍主题相关的额外信息    ·章节测验——每章结束时的测验测试读者对所学知识的掌握程度 作译者 作者   Ian Abramson是IOUG(Independent Oracle Users Group)现任总裁,现居加拿大多伦多,他是业界资深技术顾问,为电信、CRM、公用事业和其他行业的客户提供实现方案的专业指导。他的关注方向包括Oracle产品集,以及其他前沿技术和这些技术在优化数据仓库设计和部署的应用。他还是各种技术会议的主讲人,包括COLLABORATE、Oracle OpenWorld和其他地方与区域会议。   Michael Abbey是公认的数据库管理、安装、开发、应用迁移、性能调优和实现方面的权威。在过去的14年中,他与IanAbramson和MichaelCorey为OraclePress合著了一系列图书.Abbey在国际Oracle用户团体非常活跃,经常出席COLLABORATE、OraclecOpenWorld和区域性用户组会议.   Michael J.Corey是Ntirety(ThecDatabasecAdministrationcExperts)的创始人和CEO.Michael的数据库情结可追溯到Oraclec3.0.Michael是IOUG(www.ioug.org)的前总裁和早期的Oraclec Press作者.他经常在世界各地的商业和技术会议上进行学术交流.他的博客是http://michaelcorey.ntirety.com   Michelle Malcher是一名高级数据库管理员,在数据库开发、设计和管理方面具有十多年经验.她是性能调优、安全、数据建模和超大型数据库环境数据库体系结构方面的专家.她是IOUG Best Practices Tip Booklet的特约作者.Michelle积极参加IOUG活动,是特殊兴趣组的负责人.在技术会议和用户组会议上她乐于展现和分享有关Oracle数据库主题的思想.她的Email是[email protected]. 目录 封面 -14 封底 -13 扉页 -12 版权 -11 关于作者 -10 前言 -8 目录 -5 第1章 数据库基础 1 1.1 数据库定义 2 1.2 Oracle Database 11g的体系结构 3 1.2.1 控制文件 4 1.2.2 联机重做日志 4 1.2.3 System表空间 4 1.2.4 Sysaux表空间 4 1.2.5 默认的临时表空间 5 1.2.6 Undo表空间 5 1.2.7 服务器参数文件 5 1.2.8 后台进程 5 1.2.9 数据库管理员 7 1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11 1.5.1 视图 12 1.5.2 触发器 12 1.5.3 过程 13 1.5.4 函数 13
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、select ename, sal * 12 from emp; --计算年薪 2、select 2*3 from dual; --计算一个比较纯的数据用dual表 3、select sysdate from dual; --查看当前的系统时间 4、select ename, sal*12 anuual_sal from emp; --给搜索字段更改名称(双引号 keepFormat 别名有特殊字符,要加双引号)。 5、--任何含有空值的数学表达式,最后的计算结果都是空值。 6、select ename||sal from emp; --(将sal的查询结果转化为字符串,与ename连接到一起,相当于Java中的字符串连接) 7、select ename||'afasjkj' from emp; --字符串的连接 8、select distinct deptno from emp; --消除deptno字段重复的值 9、select distinct deptno , job from emp; --将与这两个字段都重复的值去掉 10、select * from emp where deptno=10; --(条件过滤查询) 11、select * from emp where empno > 10; --大于 过滤判断 12、select * from emp where empno 10 --不等于 过滤判断 13、select * from emp where ename > 'cba'; --字符串比较,实际上比较的是每个字符的AscII值,与在Java中字符串的比较是一样的 14、select ename, sal from emp where sal between 800 and 1500; --(between and过滤,包含800 1500) 15、select ename, sal, comm from emp where comm is null; --(选择comm字段为null的数据) 16、select ename, sal, comm from emp where comm is not null; --(选择comm字段不为null的数据) 17、select ename, sal, comm from emp where sal in (800, 1500,2000); --(in 表范围) 18、select ename, sal, hiredate from emp where hiredate > '02-2月-1981'; --(只能按照规定的格式写) 19、select ename, sal from emp where deptno =10 or sal >1000; 20、select ename, sal from emp where deptno =10 and sal >1000; 21、select ename, sal, comm from emp where sal not in (800, 1500,2000); --(可以对in指定的条件进行取反) 22、select ename from emp where ename like '%ALL%'; --(模糊查询) 23、select ename from emp where ename like '_A%'; --(取第二个字母是A的所有字段) 24、select ename from emp where ename like '%/%%'; --(用转义字符/查询字段中本身就带%字段的) 25、select ename from emp where ename like '%$%%' escape '$'; --(用转义字符/查询字段中本身就带%字段的) 26、select * from dept order by deptno desc; (使用order by desc字段 对数据进行降序排列 默认为升序asc); 27、sel

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值