SQL 문에서 사용하는 집계함수로
MIN
MAX
SUM
AVG
COUNT
가 있다.
💡 SFLIGHT 테이블의 레코드 개수, PRICE 필드의 총합, 최소, 최대값을 구하는 코드
DATA : BEGIN OF gs_function, cnt TYPE i, max TYPE sflight-price, min TYPE sflight-price, sum TYPE sflight-price, avg TYPE f, END OF gs_function, gv_sum TYPE sflight-price, gv_min TYPE sflight-price, gv_max TYPE sflight-price, gt_scarr TYPE TABLE OF scarr, gs_spfli TYPE spfli. SELECT COUNT( * ) SUM( price ) MIN( price ) MAX( price ) INTO ( gs_function-cnt, gv_sum, gv_min, gv_max ) FROM sflight.
⭐ 집계함수를 이용한 뒤
sy-subrc
를 통해 검증이 불가능하다.
해당하는 SELECT 문에서 데이터가 없더라도 One-line result 를 뱉어낸다.
⭐ 검증을 위해서IF gs_funtion-cnt > 0
count의 값이 0이상인지를 확인한다.
💡 잘못된 코드
SELECT carrid connid airpfrom airpto INTO CORRESPONDING FIELDS OF gs_spfli FROM spfli WHERE carrid = 'LH'.
⭐ 일반적인
SELECT
문을 사용하면FROM
절에 해당하는 레코드를 모두 가져오기 때문에 오류발생.
💡 올바른 코드
SELECT SINGLE carrid connid airpfrom airpto INTO CORRESPONDING FIELDS OF gs_spfli FROM spfli WHERE carrid = 'LH'.
⭐
SELECT SINGLE
문을 사용하여 한개의 레코드를 가져온다.
⭐ PK로 걸려있는 필드 에 조건을 주면 더 정확한 레코드를 가져올 수 있다.