首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SAP ABAP——OPEN SQL(五)【GROUPING & SORT】

SAP ABAP——OPEN SQL(五)【GROUPING & SORT】

作者头像
THUNDER王
发布2023-02-23 12:58:42
发布2023-02-23 12:58:42
7230
举报

💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址: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语句是当表的特定字段中存在相同的值时就显示在一行中

代码语言:javascript
复制
SELECT <f1> <f2> <agg>...
     GROUP BY <f1> <f2>

案例代码演示

代码语言:javascript
复制
 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.

效果示例图

sflight数据库

分组无限制条件效果


HAVING

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

代码语言:javascript
复制
 SELECT <f1> <f2> <agg>...
     ...
     GROUP BY <f1> <f2>
     HAVING <condition>

案例代码演示

代码语言:javascript
复制
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.

效果示例图

分组后限制条件效果


SORT

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

- 根据表地KEY值进行排序

- 只适用于SELECT*语句

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

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

代码语言:javascript
复制
SELECT <lines>*
...
ORDER BY <f1>[ASCENDING|DESCENDING] <f2>[ASCENDING|DESCENDING]....

案例代码演示(CARRID升序)

代码语言:javascript
复制
 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.

效果示例图

升序

案例代码演示(CARRID降序)

代码语言:javascript
复制
 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.

效果示例图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • AGGREGATE函数分类
  • GROUP BY
    • 案例代码演示
    • 效果示例图
  • HAVING
    • 案例代码演示
    • 效果示例图
  • SORT
    • 案例代码演示(CARRID升序)
    • 效果示例图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档