SQL 집계함수 및 문자열 함수

Soozoo·2024년 7월 4일

데이터베이스(DB)

목록 보기
10/19

1. 집계 함수와 GROUP BY

집계 함수는 데이터의 요약 정보를 제공하는 함수입니다. GROUP BY 절과 함께 사용하여 데이터 그룹별로 요약 정보를 계산할 수 있습니다.

예제 1: 학생들의 키의 합과 평균, 가장 키가 큰 친구, 작은 친구 출력

SELECT GRADE, SUM(HEIGHT), AVG(HEIGHT), MAX(HEIGHT), MIN(HEIGHT)
FROM STUDENT
GROUP BY GRADE;

예제 2: EMP2 테이블에서 EMP_TYPE별 인원수, PAY 합, 평균, 최고급여, 최하급여 구하기

SELECT EMP_TYPE, COUNT(EMP_TYPE), SUM(PAY), AVG(PAY), MAX(PAY), MIN(PAY)
FROM EMP2
GROUP BY EMP_TYPE;

예제 3: 교수 테이블에서 직급별로 연봉의 평균, 최고값, 최하값 구하기

SELECT POSITION, AVG(PAY), MAX(PAY), MIN(PAY)
FROM PROFESSOR
GROUP BY POSITION;

2. WHERE와 HAVING 절

WHERE 절은 데이터를 필터링하는 데 사용되며, HAVING 절은 그룹화된 데이터에 대한 조건을 지정하는 데 사용됩니다.

예제 4: 학생들의 키 평균이 172보다 큰 경우만 출력

SELECT GRADE, SUM(HEIGHT), AVG(HEIGHT), MAX(HEIGHT), MIN(HEIGHT)
FROM STUDENT
GROUP BY GRADE
HAVING AVG(HEIGHT) > 172;

예제 5: EMP2 테이블에서 PAY가 평균보다 작은 EMP_TYPE 찾기

SELECT EMP_TYPE
FROM EMP2
GROUP BY EMP_TYPE
HAVING AVG(PAY) > 4310000;

예제 6: 교수 테이블에서 최고급여 받는 사람보다 작은 직급 찾기

SELECT POSITION, AVG(PAY), MAX(PAY), MIN(PAY)
FROM PROFESSOR
GROUP BY POSITION
HAVING MIN(PAY) <= 220;

3. 숫자 함수

숫자 함수는 숫자 데이터를 처리하는 데 사용됩니다.

예제 7: 숫자 함수 사용 예제

SELECT ROUND(12.3456789, 0), ROUND(12.3456789, 1), ROUND(12.3456789, 2) FROM DUAL;
SELECT CEIL(12.34), CEIL(-12.34), CEIL(12.74) FROM DUAL;
SELECT FLOOR(12.34) FROM DUAL;
SELECT TRUNC(12.34567, 2), TRUNC(12.54342, 3) FROM DUAL;

예제 8: 교수 테이블에서 월급에 인상률 2%를 적용한 결과 출력

SELECT NAME, PAY, ROUND(PAY + PAY * 0.2, 0) "INC"
FROM PROFESSOR;

4. 문자열 함수

문자열 함수는 텍스트 데이터를 처리하는 데 사용됩니다.

예제 9: 문자열 함수 사용 예제

SELECT ID, UPPER(ID), LOWER(EMAIL) FROM PROFESSOR;
SELECT ID, LENGTH(ID), LENGTH('ABCD') FROM PROFESSOR;
SELECT DNAME, LENGTH(DNAME), LENGTHB(DNAME) FROM DEPT2;
SELECT LENGTH('사장실') FROM DUAL;
SELECT LENGTHB('사장실') FROM DUAL;

예제 10: GOGAK 테이블에서 주민번호의 7번째 문자 추출

SELECT JUMIN, SUBSTR(JUMIN, 7, 1) FROM GOGAK;

예제 11: 문자열 내 특정 문자 위치 찾기

SELECT INSTR('ABCD', 'B') FROM DUAL;
SELECT INSTR('ABCDASSBBSDAWESBSDGBB', 'B', -1) FROM DUAL;

예제 12: 문자열 패딩

SELECT LPAD('abcd', 20, '@') FROM DUAL;
SELECT RPAD('abcd', 20, '@') FROM DUAL;

예제 13: 문자열 연결

SELECT CONCAT(NAME, POSITION) || '님' FROM PROFESSOR WHERE DEPTNO = 101;
SELECT NAME || POSITION || '님' FROM PROFESSOR;

예제 14: 문자열 트리밍

SELECT LTRIM('         ABCD            ') FROM DUAL;
SELECT RTRIM('        ABCD           ') FROM DUAL;
profile
넙-죽

0개의 댓글