오라클

3강 : SQL 기본 함수와 데이터 연산

Soohocoding 2024. 12. 11. 14:10

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과 서브쿼리를 배워 데이터베이스를 더욱 효과적으로 활용하는 방법을 알아보겠습니다! 💡