天天看點

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