본문 바로가기
✨ DBMS/Oracle

[Oracle / SQL] 단일행 함수(Single)와 다중행 함수(Mutible)

by 환풍 2023. 2. 26.
728x90
반응형

단일행 함수(SINGLE ROW FUNCTION)

- 한개의 입력 한개의 출력
- SELECT, WHERE, ORDER BY, UPDATE의 SET 절에서 사용 가능
- 조회되는 컬럼 값이 같아야한다.

 

1
2
SELECT SUM(SAL)
FROM EMP;
cs

 

1
2
SELECT MAX(SAL), MIN(SAL)
FROM EMP;
cs

 

 

다중행 함수(Mutible ROW FUNCTION)

- 일반적인 컬럼과 같이 조회가 불가하다.
- 여러 행을 바탕으로 1개의 결과값을 도출
- 여러행이 결과로 나오는 열은 사용불가

 

1
2
SELECT SAL, MAX(SAL)
FROM EMP;
cs

 위 쿼리는 실행안된다.
조회되는 컬럼 값이 같아야한다.

 

1
2
SELECT COUNT(EMPNO), COUNT(ENAME), COUNT(COMM)
FROM EMP;
cs

 

 

1
SELECT COUNT(*FROM EMP;
cs

혹시라도 이런 쿼리로 숫자를 세려고한다면 절대 이렇게 하지말자.
NULL 값은 카운트 안되서 원하는 값이 안나온다. 실무가면 싸대기 맞을만한 행동이다.

 

1
2
SELECT AVG(SAL), ROUND(AVG(SAL), 2)
FROM EMP;
cs


1
SELECT 10 + 20 FROM DUAL;
cs

1
SELECT 10 + 'ORACLE' FROM DUAL;
cs

1
SELECT 'JAVA' + 'ORACLE' FROM DUAL;
cs

 문자열 + 문자열 에러뜬다. 숫자 + 문자열도 에러뜬다

 

1
SELECT 'JAVA' || 'ORACLE' FROM DUAL;
cs

이렇게 해줘야 한다.


1
SELECT 10 + NULL FROM DUAL;
cs

연산에 NULL이 포함되면 결과는 무조건 NULL이다.

 

1
SELECT AVG(COMM), SUM(COMM), COUNT(COMM) FROM EMP;
cs

 

1
SELECT SUM(COMM) / COUNT(NVL(COMM,0)) FROM EMP;
cs

다중행함수 (그룹함수) 사용시 NULL을 많이 신경쓰자.

728x90
반응형

댓글