内江建网站,南通给公司做网站的,固始做网站,西安建设银行工作招聘网站#x1f482;作者简介#xff1a; THUNDER王#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读#xff0c;同时任汉硕云#xff08;广东#xff09;科技有限公司ABAP开发顾问。在学习工作中#xff0c;我通常使用偏后端的开发语言A… 作者简介 THUNDER王一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读同时任汉硕云广东科技有限公司ABAP开发顾问。在学习工作中我通常使用偏后端的开发语言ABAPSQL进行任务的完成对SAP企业管理系统SAP ABAP开发和数据库具有较深入的研究。 文章概要 各位小伙伴们大家好呀今天继续SAP ABAP系列文章的讲解本节带来的内容是OPEN SQL中GROUP BY语句和HAVING语句以及ORDER BY语句的介绍希望大家喜欢 每日一言 永远年轻永远热泪盈眶 目录前言数据库表准备GROUP BY语句介绍 案例演示聚合函数简介HAVING语句介绍 案例演示ORDER BY语句介绍 单个字段排序 多个字段排序 使用ORDER BY删除数据写在最后的话前言 GROUP BY语句HAVING语句以及ORDER BY语句在SAP ABAP中起到了关键的作用。通过上述语句可以实现对数据的分组条件限定排序等等可以更加有效地帮助我们从数据库表中取到想要的数据跟着本文的脚步一起学习吧 数据库表准备 本文所有案例都是基于数据库表SFLIGHT本案例中的SFLIGHT数据库表数据如下供各位小伙伴们对照来观察代码运行结果 GROUP BY语句介绍 以下是从数据库表中读取数据并且对数据进行分组聚合的一般语法样式
SELECT f1 f2 ... fn aggregate...AS alias
FROM table_name
GROUP BY f1 f2...fn aggregate
INTO [CORRESPONDING FIELDS OF TABLE] itab
WHERE condition参数介绍 fn: 数据库表中字段。 aggregate: 聚合函数。 alias: 聚合函数别名 table_name: 数据库表的名称。 itab存放数据的内表。 conditionWHERE子句限定条件 案例演示 下面给出一段以SFLIGHT数据库表为基准的示例代码详细讲解了ABAP OPEN SQL中如何使用GROUP BY语句对数据进行分类仅供参考 PS使用GROUP BY语句的先决条件是查询数据时使用了聚合函数聚合函数将在下面讲解并且最好使用OPEN SQL的新语法。 SELECT carrid,connid,SUM( price ) AS total_price
FROM sflight
INTO TABLE DATA(gt_sflight)
GROUP BY carrid,connid.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-total_price.
ENDLOOP.这段代码主要目的是从表 SFLIGHT中获取每个航空公司和航班连接的总价格并将其存储在名为gt_sflight的内部表中然后使用循环读取内部表并输出每个航空公司和航班连接的总价格。 下面是对代码的逐段分析 一第一段代码分析
SELECT carrid, connid, SUM(price) AS total_price
FROM sflight
INTO TABLE DATA(gt_sflight)
GROUP BY carrid, connid.这段代码是从表 SFLIGHT 中选择carrid、connid 和 price列并使用 SUM 聚合函数将每个航空公司和航班连接的价格相加。然后使用 INTO TABLE 将结果存储在名为gt_sflight的内部表中并按照 carrid 和 connid 列进行分组。 二第二段代码分析
LOOP AT gt_sflight INTO DATA(gs_sflight).这行代码是使用LOOP AT 语句遍历 gt_sflight 内部表中的每个记录并将每个记录存储在名为 gs_sflight 的工作区域变量中。 三第三段代码分析
WRITE: / gs_sflight-carrid, gs_sflight-connid, gs_sflight-total_price.这行代码使用 WRITE 语句将每个记录的 carrid、connid 和 total_price 列的值输出到控制台屏幕。斜杠符号表示将每个记录的值输出到新的行。 聚合函数简介 在ABAP Open SQL中可以使用聚合函数对数据库中的数据进行汇总和统计。
聚合函数名称功能简介AVG取平均值COUNT取个数MAX取最大值MIN取最小值STDDEV取标准偏差SUM取合计在使用GROUP BY语句之前必须要先使用聚合函数对数据进行汇总和统计 聚合函数括号中的字段需要与两边的括号距离至少一个单位 错误写法SUM(PRICE) 正确写法: SUM( PRICE ) HAVING语句介绍 HAVING语句用于在GROUP BY子句之后对聚合结果进行过滤。HAVING语句与WHERE语句非常相似但它们用于不同的语句部分。
注意事项HAVING语句必须跟在GROUP BY子句之后。HAVING语句使用与WHERE语句相同的语法。HAVING语句中的条件必须是聚合函数。以下是对数据分组并且对聚合结果进行过滤的一般语法样式
SELECT f1 f2 ... fn aggregate...AS alias
FROM table_name
GROUP BY f1 f2...fn aggregate
HAVING agg_condition
INTO [CORRESPONDING FIELDS OF TABLE] itab
WHERE condition参数介绍 fn: 数据库表中字段。 aggregate: 聚合函数。 alias: 聚合函数别名 table_name: 数据库表的名称。 agg_condition: 聚合结果过滤条件。 itab存放数据的内表。 conditionWHERE子句限定条件 案例演示 下面给出一段以SFLIGHT数据库表为基准的示例代码详细讲解了ABAP OPEN SQL中如何使用HAVING语句对数据聚合结果进行过滤仅供参考
SELECT carrid,connid,SUM( price ) AS total_price
FROM sflight
INTO TABLE DATA(gt_sflight)GROUP BY carrid,connidHAVING SUM( price ) 1000.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-total_price.
ENDLOOP.该段代码在GROUP BY语句案例演示中的的基础上增加了一个HAVING语句过滤了total_price 1000的数据。 ORDER BY语句介绍 ABAP中的ORDER BY语句用于对数据库表中的数据进行排序。排序可以按照单个字段或多个字段进行可以按照升序或降序排列。 以下是对数据分组并且对聚合结果进行过滤以及最终对字段进行排序的一般语法样式
SELECT f1 f2 ... fn aggregate...AS alias
FROM table_name
GROUP BY f1 f2...fn aggregate
HAVING agg_condition
ORDER BY f1 f2...fn aggregate [ASC|DESC]
INTO [CORRESPONDING FIELDS OF TABLE] itab
WHERE condition参数介绍 fn: 数据库表中字段。 aggregate: 聚合函数。 alias: 聚合函数别名 table_name: 数据库表的名称。 agg_condition: 聚合结果过滤条件。 [ ASCENDING|DESCENDING]: 可选项ASCENDING(默认)升序DESCENDING降序。 itab存放数据的内表。 conditionWHERE子句限定条件 单个字段排序 下面给出一段以SFLIGHT数据库表为基准的示例代码详细讲解了ABAP OPEN SQL中如何使用单个字段·进行排序仅供参考
SELECT carrid,connid,SUM( price ) AS total_price
FROM sflight
INTO TABLE DATA(gt_sflight)GROUP BY carrid,connidHAVING SUM( price ) 1000ORDER BY total_price.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-total_price.
ENDLOOP.该段代码在HAVINF语句案例演示中的的基础上增加了一个ORDER BY语句对total_price进行了升序排序。 多个字段排序 下面给出一段以SFLIGHT数据库表为基准的示例代码详细讲解了ABAP OPEN SQL中如何使用多个字段·进行排序仅供参考 PS如果ORDER BY语句中包含多个字段那么排序优先级是从左往右依次递减的。也就是说先按照第一个字段排序如果第一个字段有相同的值则按照第二个字段排序以此类推。 SELECT carrid,connid,SUM( price ) AS total_price
FROM sflight
INTO TABLE DATA(gt_sflight)GROUP BY carrid,connidHAVING SUM( price ) 1000ORDER BY carrid ASCENDING,total_price DESCENDING.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-total_price.
ENDLOOP.该段代码在HAVINF语句案例演示中的的基础上增加了一个ORDER BY语句先对carrid进行了升序排序再对total_price进行了降序排序。 使用ORDER BY删除数据 除了用在SELECT语句中ORDER BY语句还可以用在DELETE、UPDATE、INSERT等语句中。例如可以使用ORDER BY语句删除最后一行记录
DELETE FROM sflight
ORDER BY price ASCENDING
UP TO 1 ROWS.这段代码可以删除掉SFLIGHT数据库表中PRICE列最小的该条数据 写在最后的话 本文花费大量时间介绍了OPEN SQL中GROUP BY语句HAVING语句以及ORDER BY语句的详细用法希望能帮助到各位小伙伴码文不易还望各位大佬们多多支持哦你们的支持是我最大的动力 ✨原创不易还希望各位大佬支持一下\textcolor{blue}{原创不易还希望各位大佬支持一下}原创不易还希望各位大佬支持一下 点赞你的认可是我创作的动力\textcolor{9c81c1}{点赞你的认可是我创作的动力}点赞你的认可是我创作的动力 ⭐️ 收藏你的青睐是我努力的方向\textcolor{ed7976}{收藏你的青睐是我努力的方向}收藏你的青睐是我努力的方向 ✏️ 评论你的意见是我进步的财富\textcolor{98c091}{评论你的意见是我进步的财富}评论你的意见是我进步的财富