● 숫자형 함수
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;
![](https://blog.kakaocdn.net/dn/Il4k9/btryg3Jm0Gt/mZZPxHyUkUbKcycMxnKoo0/img.png)
2. 양의 정수(1), 영(0), 음의 정수(-1)
SELECT SIGN(4), SIGN(0), SIGN(-4) FROM DUAL;
![](https://blog.kakaocdn.net/dn/d1QI3Y/btryfZHsCK1/xZ8KSrFbKDQXxh8a8qYZKK/img.png)
3. 나머지
SELECT MOD(10, 3) FROM DUAL;
![](https://blog.kakaocdn.net/dn/caqYEi/btryfZ1Ja4U/CzHKthkKwtjLxxXH0TKFNk/img.png)
4. 올림
SELECT CEIL(3.14), CEIL(-3.14) FROM DUAL;
![](https://blog.kakaocdn.net/dn/taZVe/btryd9xhv2Z/TNLV4csTXHeQ0NdR9Ri2TK/img.png)
5. 내림
SELECT FLOOR(3.14), FLOOR(-3.14) FROM DUAL;
![](https://blog.kakaocdn.net/dn/cJODqg/btryguUJc6F/KjAJtCDiTxGX3oepuvJIRk/img.png)
6. 버림
SELECT TRUNC(3.9), TRUNC(-3.9) FROM DUAL;
![](https://blog.kakaocdn.net/dn/OdZGT/btryg3CAy2z/v9iyVE5R7ITxKCCZToy5YK/img.png)
7. 반올림
SELECT ROUND(3.4555616), ROUND(3.4555616, 2), ROUND(3.4555616, 1) FROM DUAL;
![](https://blog.kakaocdn.net/dn/dug7Wh/btryguf7StL/NInX9apgGT32CYi1n1leK0/img.png)
8. PLAYER 테이블에서 키는 소수점 둘 째자리까지 반올림, 몸무게는 소수점 버림으로 조회
▶HEIGHT와 WEIGHT를 실수로 가정한다.
▶키 또는 몸무게가 NULL이라면 원하는 수치로 변경시키도록 조회한다.
▶키 값 뒤에 cm를 붙여주고, 몸무게 값 뒤에 kg을 붙여준다.
SELECT PLAYER_NAME "선수 이름", NVL(ROUND(HEIGHT, 2), '184') || 'cm' 키, NVL(TRUNC(WEIGHT), 75) || 'kg' 몸무게
FROM PLAYER;
![](https://blog.kakaocdn.net/dn/caJ3it/btryd9cU4EP/0Eu62cXJIJbDIaT2ZdVkF0/img.png)
실습(집계 함수)
1. PLAYER 테이블의 평균, 최대값, 최소값, 총 합, 개수 구하기(NULL이 포함되지 않은 경우)
SELECT AVG(HEIGHT), MAX(HEIGHT), MIN(HEIGHT), SUM(HEIGHT), COUNT(HEIGHT) FROM PLAYER;
![](https://blog.kakaocdn.net/dn/bQ9Gan/btrydJFy4zC/n0WCkrKu0OCz8lkKtIeFt1/img.png)
2. PLAYER 테이블에서 HEIGHT 총 개수 검색(NULL을 포함해서 COUNT)
SELECT COUNT(NVL(HEIGHT, 0)) FROM PLAYER;
![](https://blog.kakaocdn.net/dn/borLSb/btryf0l2Vfi/TuOOyG9QnkrRU2hFQoBXqk/img.png)
실습(정렬)
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 |