ABAP SQL SELECT句で使用可能な関数

  SQL

概要

SQLのSELECT句で使用可能な関数DISTINCT、SUM、AVG、MAX、MIN、COUNTについて触れてみよう。
どちらかというと内部テーブルで同様の事を行うケースが多いと思うので、使用頻度については
少ないかもしれないが、データ件数が少なくどちらでやってもパフォーマンスに影響がでないので
あれば使用を検討しても良いかもしれない。

DISTINCT

重複削除した結果が返される。

DATA: IT_SFLIGHT type table of SFLIGHT.
SELECT DISTINCT CARRID
  FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE IT_SFLIGHT.

SUM

数値項目に使用でき、GROUP句にて使用した単位での集計値が返される。
以下の例ではフライト日単位の合計金額が返る。

DATA: IT_SFLIGHT type table of SFLIGHT.
SELECT FLDATE SUM( PRICE ) As PRICE
  FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE IT_SFLIGHT
 GROUP BY FLDATE.

AVG

数値項目に使用でき、GROUP句にて使用した単位での平均値が返される。
以下の例ではフライト日単位の平均金額が返る。

DATA: IT_SFLIGHT type table of SFLIGHT.
SELECT FLDATE AVG( PRICE ) As PRICE
  FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE IT_SFLIGHT
 GROUP BY FLDATE.

MAX

数値項目に使用でき、GROUP句にて使用した単位内の最大値が返される。
以下の例ではフライト日内の最大金額が返る。

DATA: IT_SFLIGHT type table of SFLIGHT.
SELECT FLDATE MAX( PRICE ) As PRICE
  FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE IT_SFLIGHT
 GROUP BY FLDATE.

MIN

数値項目に使用でき、GROUP句にて使用した単位内の最小値が返される。
以下の例ではフライト日内の最小金額が返る。

DATA: IT_SFLIGHT type table of SFLIGHT.
SELECT FLDATE MIN( PRICE ) As PRICE
  FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE IT_SFLIGHT
 GROUP BY FLDATE.

COUNT

指定した単位でのレコード件数を返す。
以下の例ではフライト日単位のレコード件数を返す。
また、GROUP句を使用せず使用した場合は、テーブルの合計件数を返す。

TYPES: BEGIN OF T_CNT,
         FLDATE TYPE SFLIGHT-FLDATE,
         CNT    TYPE I,
       END OF T_CNT.
DATA: IT_CNT TYPE TABLE OF T_CNT.

SELECT FLDATE COUNT( * ) As CNT
  FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE IT_CNT
 GROUP BY FLDATE.

SQLの基本的な使い方についてはこちらを参照