본문 바로가기

DBMS

[DBMS] 10

 

집계함수

- 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;

 

'DBMS' 카테고리의 다른 글

[DBMS] 12  (0) 2021.11.05
[DBMS] 11  (0) 2021.11.04
[DBMS] 09  (0) 2021.11.02
[DBMS] 08  (0) 2021.11.01
[DBMS] 07  (0) 2021.10.31