天天看点

SAP ABAP——OPEN SQL(五)【GROUPING & SORT】AGGREGATE函数分类GROUP BYHAVINGSORT

💬个人网站:【芒果个人日志】​​​​​​

💬原文地址:SAP ABAP——OPEN SQL(五)【GROUPING & SORT】 - 芒果个人日志 (wyz-math.cn)

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。

💅文章概要:本文主要介绍一下SAP ABAP中OPEN SQL的GROUPING和SORT语句

🤟每日一言:宝剑锋从磨砺出,梅花香自苦寒来。

目录

AGGREGATE函数分类

GROUP BY

案例代码演示

效果示例图

HAVING

案例代码演示

效果示例图

SORT

案例代码演示(CARRID升序)

效果示例图

AGGREGATE函数分类

函数 功能
AVG 取平均值
COUNT 取个数
MAX 取最大值
MIN 取最小值
STDDEV 取标准偏差
SUM 取合计

注意!所有AGG函数的括号内字段前后必须有一个空格如SUM( CARRID ),否则系统检测不出来!

GROUP BY

使用Aggregate函数之前,选择数据时需要用GROUP BY语句进行分组。GROUP BY语句是当表的特定字段中存在相同的值时就显示在一行中

SELECT <f1> <f2> <agg>...
     GROUP BY <f1> <f2>
           

案例代码演示

DATA:GV_CARRID TYPE SFLIGHT-CARRID,
 GV_PRICE TYPE I.

 SELECT CARRID SUM( PRICE ) INTO (GV_CARRID,GV_PRICE) FROM SFLIGHT GROUP BY CARRID.
   WRITE:/ GV_CARRID,GV_PRICE.
 ENDSELECT.
           

效果示例图

SAP ABAP——OPEN SQL(五)【GROUPING &amp; SORT】AGGREGATE函数分类GROUP BYHAVINGSORT

sflight数据库

SAP ABAP——OPEN SQL(五)【GROUPING &amp; SORT】AGGREGATE函数分类GROUP BYHAVINGSORT

分组无限制条件效果

HAVING

HAVING语句主要是用来对进行分组后进行限制条件的语句,要放在GROUP BY语句之后,下面案例演示中限制了上面SUM( PRICE )的值需要大于1000

SELECT <f1> <f2> <agg>...
     ...
     GROUP BY <f1> <f2>
     HAVING <condition>
           

案例代码演示

DATA:GV_CARRID TYPE SFLIGHT-CARRID,
 GV_PRICE TYPE I.

SELECT CARRID SUM( PRICE ) INTO (GV_CARRID,GV_PRICE) FROM SFLIGHT GROUP BY CARRID HAVING SUM( PRICE ) 
 > 1000.
WRITE:/ GV_CARRID,GV_PRICE.
ENDSELECT.
           

效果示例图

SAP ABAP——OPEN SQL(五)【GROUPING &amp; SORT】AGGREGATE函数分类GROUP BYHAVINGSORT

分组后限制条件效果

SORT

在查询数据时可以使用ORDER BY语句,则查询出来的结果会按照ORDER BY指定的字段进行排序。若不使用ORDER BY就会任意地显示排序结果。其中ORDER BY语句还有如下特点需要牢记

- 根据表地KEY值进行排序

- 只适用于SELECT*语句

- 在JOIN语句和视图中无法使用

- 若不指定排序为升序还是降序则默认为升序

SELECT <lines>*
...
ORDER BY <f1>[ASCENDING|DESCENDING] <f2>[ASCENDING|DESCENDING]....
           

案例代码演示(CARRID升序)

DATA:GV_CARRID TYPE SFLIGHT-CARRID,
 GV_PRICE TYPE I.

 SELECT CARRID SUM( PRICE ) INTO (GV_CARRID,GV_PRICE) FROM SFLIGHT GROUP BY CARRID HAVING SUM( PRICE ) > 1000 ORDER BY  CARRID  ASCENDING.
 WRITE:/ GV_CARRID,GV_PRICE.
 ENDSELECT.
           

效果示例图

SAP ABAP——OPEN SQL(五)【GROUPING &amp; SORT】AGGREGATE函数分类GROUP BYHAVINGSORT

升序

案例代码演示(CARRID降序)

DATA:GV_CARRID TYPE SFLIGHT-CARRID,
 GV_PRICE TYPE I.

 SELECT CARRID SUM( PRICE ) INTO (GV_CARRID,GV_PRICE) FROM SFLIGHT GROUP BY CARRID HAVING SUM( PRICE ) > 1000 ORDER BY  CARRID  DESCENDING.
 WRITE:/ GV_CARRID,GV_PRICE.
 ENDSELECT.
           

效果示例图

SAP ABAP——OPEN SQL(五)【GROUPING &amp; SORT】AGGREGATE函数分类GROUP BYHAVINGSORT