概要
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の基本的な使い方についてはこちらを参照
最近のコメント