본문 바로가기

웹 개발/DBMS

[Web_DBMS] 08

● 숫자형 함수

1. ABS() : 절대값

2. SIGN() : 정수 판별

3. MOD() : 나머지

4. CEIL() : 값보다 큰 최근접 정수(올림)

5. FLOOR() : 값보다 작은 최근접 정수(내림)

6. TRUNC() : 버림

7. ROUND() : 반올림

 

 

 

● 집계 함수

- 여러 개의 값을 하나의 값으로 집계하여 나타낸다.

- NULL은 포함하지 않는다.

- WHERE 절에서는 사용할 수 없다.

 

1. AVG() : 평균

2. MAX() : 최대값

3. MIN() : 최소값

4. SUM() : 총 합

5. COUNT() : 개수

 

 

 

● 정렬(ORDER BY)

- ASC : 오름 차순(DEFAULT)

- DESC : 내림 차순

 

 

 

● GROUP BY(~별)

GROUP BY 컬럼명 HAVING 조건식

- WHERE절에서 우선적으로 처리할 조건식을 작성해야 속도가 향상된다.

(ex) 포지션 별 평균 키

 

 

 


 

실습(숫자형 함수)

1. 절대값

SELECT ABS(-10) FROM DUAL;

 

결과

 

 

 

2. 양의 정수(1), 영(0), 음의 정수(-1)

SELECT SIGN(4), SIGN(0), SIGN(-4) FROM DUAL;

 

결과

 

 

 

3. 나머지

SELECT MOD(10, 3) FROM DUAL;

 

결과

 

 

 

4. 올림

SELECT CEIL(3.14), CEIL(-3.14) FROM DUAL;

 

결과

 

 

 

5. 내림

SELECT FLOOR(3.14), FLOOR(-3.14) FROM DUAL;

 

결과


 

6. 버림

SELECT TRUNC(3.9), TRUNC(-3.9)  FROM DUAL;

 

결과

 

 

 

 

7. 반올림

SELECT ROUND(3.4555616), ROUND(3.4555616, 2), ROUND(3.4555616, 1) FROM DUAL;

 

결과

 

 

 

 

8. PLAYER 테이블에서 키는 소수점 둘 째자리까지 반올림, 몸무게는 소수점 버림으로 조회

▶HEIGHT와 WEIGHT를 실수로 가정한다.

▶키 또는 몸무게가 NULL이라면 원하는 수치로 변경시키도록 조회한다.

▶키 값 뒤에 cm를 붙여주고, 몸무게 값 뒤에 kg을 붙여준다.

SELECT PLAYER_NAME "선수 이름", NVL(ROUND(HEIGHT, 2), '184') || 'cm' 키, NVL(TRUNC(WEIGHT), 75) || 'kg' 몸무게
FROM PLAYER;

 

 

결과

 

 

 

 

 

실습(집계 함수)

1. PLAYER 테이블의 평균, 최대값, 최소값, 총 합, 개수 구하기(NULL이 포함되지 않은 경우)

SELECT AVG(HEIGHT), MAX(HEIGHT), MIN(HEIGHT), SUM(HEIGHT), COUNT(HEIGHT) FROM PLAYER;

 

 

결과

 

 

 

2. PLAYER 테이블에서 HEIGHT 총 개수 검색(NULL을 포함해서 COUNT)

SELECT COUNT(NVL(HEIGHT, 0)) FROM PLAYER;

 

 

결과

 

 

 

 

 

실습(정렬)

1. ASC

- 키를 기준으로 오름차순 정렬

SELECT * FROM PLAYER
ORDER BY HEIGHT ASC;

 

 

 

2. DESC

- 키를 기준으로 내림차순 정렬

SELECT * FROM PLAYER
WHERE HEIGHT IS NOT NULL
ORDER BY HEIGHT DESC;

 

 

- 키를 기준으로 오름차순 정렬(키가 같다면 몸무게를 기준으로 내림차순 정렬)

SELECT * FROM PLAYER
WHERE WEIGHT IS NOT NULL AND HEIGHT IS NOT NULL
ORDER BY HEIGHT ASC, WEIGHT DESC;

 

 

※ 비추천, DBMS 버전별로 인식 못하는 문제 생김

SELECT * FROM PLAYER
WHERE HEIGHT IS NOT NULL
ORDER BY 12 DESC;

 

 

 

3. PLAYER 테이블에서 키 순, 몸무게 순으로 오름차순 검색

▶NULL이 아닌 값만 검색

▶컬럼의 번호로 정렬한다.

▶첫번째 컬럼 값이 같으면, 두번째 정렬을 진행한다.

SELECT * FROM PLAYER
WHERE WEIGHT IS NOT NULL AND HEIGHT IS NOT NULL
ORDER BY 12, 13;

 

 

 

 

실습(GROUP BY)

※ 그룹으로 묶은 컬럼이 SELECT절에 하나라도 있어야 한다.

 

1. PLAYER 테이블에서 포지션 종류 검색

SELECT "POSITION" FROM PLAYER
WHERE "POSITION" IS NOT NULL
GROUP BY "POSITION";

 

 

 

2. PLAYER 테이블에서 몸무게가 80이상인 선수들의 평균 키가 180이상인 포지션 검색

SELECT "POSITION" FROM PLAYER
WHERE WEIGHT >= 80
GROUP BY "POSITION"
HAVING AVG(HEIGHT) >= 180 ;

 

 

 

3. EMPLOYEES 테이블에서 JOB_ID별 평균 SALARY가 10000미만인 JOB_ID 검색

▶JOB_ID는 알파벳 순으로 정렬(오름 차순)

SELECT JOB_ID FROM EMPLOYEES
GROUP BY JOB_ID
HAVING AVG(SALARY) < 10000
ORDER BY JOB_ID;

 

 

'웹 개발 > DBMS' 카테고리의 다른 글

[Web_DBMS] 10  (0) 2022.04.08
[Web_DBMS] 09  (0) 2022.04.07
[Web_DBMS] 07  (0) 2022.04.05
[Web_DBMS] 06  (0) 2022.04.04
[Web_DBMS] 05  (0) 2022.04.03