● 집계함수
- NULL은 포함하지 않는다.
- WHERE 절에서는 사용할 수 없다.
- 여러 개의 값을 하나로 집계하여 나타낸다.
● 집계함수 종류
- AVG() : 평균
- MAX() : 최대값
- MIN() : 최소값
- SUM() : 총 합
- COUNT() : 개수
(ex)
1. PLAYER 테이블에서 HEIGHT의 평균, 최대값, 최소값, 총 합, 개수 검색(평균은 소수점 두번째 자리까지 반올림 하기)
SELECT ROUND(AVG(HEIGHT), 2), MAX(HEIGHT), MIN(HEIGHT), SUM(HEIGHT), COUNT(HEIGHT) FROM PLAYER;
2. PLAYER 테이블에서 HEIGHT 개수 검색(NULL 포함해서 COUNT 하기)
SELECT COUNT(NVL(HEIGHT, 0)) FROM PLAYER;
● ORDER BY : 정렬
- ASC : 오름차순
- DESC : 내림차순
※ Default : ASC
(ex)
1. PLAYER 테이블의 HEIGHT 컬럼 오름차순 정렬
SELECT * FROM PLAYER ORDER BY HEIGHT;
2. PLAYER 테이블의 HEIGHT 컬럼 내림차순 정렬
SELECT * FROM PLAYER ORDER BY HEIGHT DESC;
3. 열 번호로 검색
1) PLAYER 테이블의 12번째 컬럼을 내림차순 정렬(위의 결과와 동일한 결과 출력됨)
SELECT * FROM PLAYER ORDER BY 12 DESC;
2) PLAYER 테이블에서 키 순, 몸무게 순(오름차순)으로 검색,
NULL이 아닌 값만 검색,
첫번째 컬럼 값이 같으면 두번째 컬럼으로 정렬
SELECT PLAYER_NAME, HEIGHT, WEIGHT FROM PLAYER
WHERE HEIGHT IS NOT NULL AND WEIGHT IS NOT NULL
ORDER BY 2, 3;
● CASE문
CASE WHEN 조건식 THEN '참 값' ELSE '거짓 값' END
(ex)
1. EMP 테이블에서 SAL 3000 이상이면 HIGH, 1000 이상이면 MID, 다 아니면 LOW
SELECT * FROM EMP;
SELECT ENAME 사원명, SAL 급여,
CASE
WHEN SAL >= 3000 THEN 'HIGH'
WHEN SAL >= 1000 THEN 'MID'
ELSE 'LOW'
END
FROM EMP;
2. 중첩 CASE 문
1) STADIUM 테이블에서 SEAT_COUNT가 0 이상 30000 이하면 'S',
30001 이상 50000 이하면 'M', 다 아니면 'L'
SELECT STADIUM_NAME 경기장, SEAT_COUNT 좌석수,
CASE
WHEN SEAT_COUNT BETWEEN 0 AND 30000 THEN 'S'
ELSE
(
CASE
WHEN SEAT_COUNT BETWEEN 30001 AND 50000 THEN 'M'
ELSE 'L'
END
)
END
FROM STADIUM;
2) PLAYER 테이블에서 WEIGHT가 50 이상 70 이하면 'L',
71 이상 80 이하면 'M', NULL이면 '미등록', 다 아니면 'H'
SELECT PLAYER_NAME 선수이름, WEIGHT||'kg' 몸무게,
CASE
WHEN WEIGHT BETWEEN 50 AND 70 THEN 'L'
WHEN WEIGHT BETWEEN 71 AND 80 THEN 'M'
ELSE
(
CASE
WHEN WEIGHT IS NULL THEN '미등록'
ELSE 'H'
END
)
END 체급
FROM PLAYER;