1. SQL 함수란?
SQL 함수는 데이터를 처리하거나 계산하는 데 사용하는 내장 함수이다.
데이터를 변환하거나 통계를 계산할 때 유용하게 사용된다.
함수 종류
1. 단일 행 함수 : 각 행에 대해 하나의 결과를 변환
예) 문자열, 숫자, 날짜 처리함수
2.집계 함수 : 여러 행을 그룹화하여 하나의 결과를 반환
예)합계, 평균, 최대값 등
2. 문자열 함수
문자열 데이터를 처리하는 데 사용된다.
문자열 연결 (CONCAT)
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees
;
문자열 길이 (LENGTH)
SELECT first_name, LENGTH(first_name) AS name_length
FROM employees
;
대/소문자 변환 (UPPER, LOWER)
SELECT UPPER(first_name) AS upper_name, LOWER(last_name) AS lower_name
FROM employees
;
문자열 일부 추출 (SUBSTR)
SELECT SUBSTR(first_name, 1, 3) AS short_name
FROM employees
;
3. 숫자 함수
숫자 데이터를 연산하거나 변환할 때 사용된다.
반올림 (ROUND)
SELECT salary, ROUND(salary, -3) AS rounded_salary
FROM employees
;
올림/내림(CEIL, FLOOR)
SELECT salary, CEIL(salary / 1000) AS ceil_value, FLOOR(salary / 1000) AS floor_value
FROM employees
;
절대값 (ABS)
SELECT salary, ABS(salary - 5000) AS deviation
FROM employees
;
4. 날짜 함수
날짜 데이터를 처리하거나 계산할 때 사용된다.
현재 날짜 (SYSDATE)
SELECT SYSDATE AS current_date
FROM dual
;
날짜 형식 변환 (TO_CHAR)
SELECT TO_CHAR(hire_date, 'YYYY-MM-DD') AS formatted_date
FROM employees
;
특정 날짜 더하기 (ADD_MONTHS)
SELECT first_name, ADD_MONTHS(hire_date, 6) AS six_months_later
FROM employees
;
5. 집계 함수
집계 함수는 데이터를 그룹화하여 통계 정보를 계산한다.
합계 (SUM)
SELECT SUM(salary) AS total_salary
FROM employees
;
평균 (AVG)
SELECT AVG(salary) AS average_salary
FROM employees
;
최대/최솟값(MAX,MIN)
SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary
FROM employees
;
개수 (COUNT)
SELECT COUNT(*) AS total_employees
FROM employees
;
6. GROUP BY와 집계 함수
GROUP BY를 사용해 데이터를 그룹화하고, 각 그룹에 대해 집계 함수를 적용할 수 있다.
부서별 급여 합계
SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id
;
조건 추가 (HAVING)
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000
;
7. 실습 예제
아래 SQL을 실행하며 기본 함수와 집계 함수를 실습해 보자
SELECT first_name, LENGTH(first_name) AS name_length
FROM employees;
SELECT first_name, hire_date, SYSDATE - hire_date AS days_worked
FROM employees;
SELECT department_id, COUNT(*) AS total_employees, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;
SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id
HAVING SUM(salary) >= 20000;
8. 과제
1. employees 테이블에서 직원의 first_name 과 대문자로 변환된 이름을 조회하라.
SELECT first_name, UPPER(first_name) AS upper_name
FROM employees;
2. 부서별 직원 수를 계산하고, 직원 수가 5명 이상인 부서만 조회하세요.
SELECT department_id, COUNT(*) AS total_employees
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 5;
3강 정리
- 문자열, 숫자, 날짜 관련 기본 함수를 배웠습니다.
- 집계 함수와 GROUP BY를 활용한 그룹화 쿼리를 익혔습니다.
- HAVING 절로 그룹화된 데이터의 조건을 필터링하는 방법을 학습했습니다.
다음 강에서는 JOIN과 서브쿼리를 배워 데이터베이스를 더욱 효과적으로 활용하는 방법을 알아보겠습니다! 💡
'오라클' 카테고리의 다른 글
5강: 테이블 관리와 데이터 조작 (0) | 2024.12.16 |
---|---|
4강 : JOIN과 서브쿼리 활용 (1) | 2024.12.11 |
2강 : SQL 기본 문법과 SELECT 활용 (0) | 2024.12.11 |
1강: 오라클 데이터베이스와 SQL 소개 (0) | 2024.12.11 |
not exists 이해하기 (1) | 2024.05.28 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!