<학습목표> => 집계함수 = 윈도우함수
덧셈에 NULL일 들어가면 값이 NULL이지만
SUM에서 NULL은 0으로 취급함
AVG를 쓸땐 NVL를 꼭 사용해야 한다
EX)
SELECT ROUND(AVG(NVL(PROD_SALE, 0)),2) 판매가
FROM PROD;
그룹별로 모아서 평균 내기
SELECT PROD_LGU
, ROUND(AVG(NVL(PROD_COST, 0)),2)
FROM PROD
GROUP BY PROD_LGU;
COUNT : 자료수
DISTINCT : 중복제거
아스트리크 : 전체 컬럼의 개수를 다 센다 NULL과는 상관없이 센다
EX)
SELECT CART_MEMBER 회원ID
, COUNT(DISTINCT CART_PROD) 중복제거구매회수
, COUNT(CART_PROD) 구매회수
, COUNT(*)
FROM CART
GROUP BY CART_MEMBER;
집계복음 3장 16절라클
SELECT절에서 집계함수 이외의 컬럼들은 GROUP BY절에 기술해야하느니라 라클
EX)
회원테이블에서 지역(주소1의 2자기), 생일년도 별로 마일리지평균, 마일리지합계,
최고마일리지, 최소마일리지, 자료수를 검색하시오
ALIAS는 지역, 생일연도, 마일리지평균, 마일리지합계, 최고마일리지, 최소마일리지, 자료수
SELECT SUBSTR(MEM_ADD1, 1, 2) 지역
, SUBSTR(MEM_BIR, 1, 4) 생일연도
, ROUND(AVG(NVL(MEM_MILEAGE, 0)), 2) 마일리지평균
, SUM(MEM_MILEAGE) 마일리지합계
, MAX(MEM_MILEAGE) 최고마일리지
, MIN(MEM_MILEAGE) 최소마일리지
, COUNT(*) 자료수
FROM MEMBER
GROUP BY SUBSTR(MEM_ADD1, 1, 2), SUBSTR(MEM_BIR, 1, 4)
ORDER BY SUBSTR(MEM_ADD1, 1, 2), SUBSTR(MEM_BIR, 1, 4);
소 GROUP
GROUP을 한번 지었는데 한번더 GROUP을 만들어주는걸 소 GROUP이라고 한다
GROUP BY 할땐 그대로 다 적어줘야한다