1. [SQL] SQL 함수
ㅇ SQL 함수의 구분
- 내장 함수
. 단일 행 함수
.. 한 행(row)을 입력으로 받아 한 값을 반환
.. 例) 숫자형 함수, 문자열 함수, 날짜형 함수, 형변환 함수 등
. 다중 행 함수
.. 여러 행을 입력받아 하나의 결과를 반환
.. 例) 집계 함수, 그룹 함수, 윈도우 함수
- 사용자 정의 함수
.. 사용자가 직접 정의한 함수
.. 例) CREATE FUNCTION ...
ㅇ 단일 행 함수
- 숫자형 함수
. ABS(x) : 절댓값, CEIL(x) : 올림 (Ceiling), FLOOR(x) : 내림 (Floor) 등
- 문자열 함수
. CONCAT(a,b) : 문자열 연결, SUBSTR(s,start,length) : 부분 문자열,
LENGTH(s) : 문자열 길이 등
- 날짜형 함수
. CURRENT_DATE : 현재 날짜 반환, EXTRACT(part FROM date) : 날짜 요소 추출,
DATE_ADD(date,INTERVAL n unit) : 날짜 더하기 등
- 형변환 함수
. CAST(expression AS type) : 명시적 형변환,
CONVERT(expression, type) : 형변환 (주로 MySQL 스타일),
TO_CHAR(date, format) : 날짜를 문자열로 변환 (주로 Oracle) 등
ㅇ 다중 행 함수 : 데이터 분석을 위한 그룹핑 기능 관련 함수
- Aggregate 기능 (대표적임)
. 여러 행을 입력으로 받아 하나의 결과를 계산하는 함수
. 例) COUNT() : 개수, SUM() : 합계, AVG() : 평균, MAX() : 최댓값, MIN() : 최솟값,
VAR_POP() : 모분산, VAR_SAMP() : 표본분산, STDDEV_POP() : 모표준편차,
STDDEV_SAMP() : 표본표준편차
- Group 기능
. 결과를 다양한 방법으로 그룹화
. 例) ROLLUP : 위계적 요약, CUBE : 모든 조합을 요약, GROUPING SETS : 사용자 정의 그룹핑
- Window 기능
. 다수 행을 대상으로 하지만 결과는 각 행마다 반환하는 함수
. 例) ROW_NUMBER(), RANK(), DENSE_RANK(), SUM() OVER(), AVG() OVER()
2. [SQL] SQL 집계 함수
ㅇ COUNT() : 행(row) 개수를 셈
- (주의) NULL 값은 제외됨 (단, COUNT(*)는 NULL 포함 전체 행 수)
ㅇ SUM() : 특정 컬럼의 값들을 모두 합산
- (주의) 컬럼에 NULL 값이 있어도 무시하고 합산
ㅇ AVG() : 특정 컬럼 값들의 평균 계산
- (주의) NULL은 제외하고 평균 계산
ㅇ MIN() : 최소값 반환
- (주의) NULL은 무시
ㅇ MAX() : 최대값 반환
- (주의) NULL은 무시
ㅇ VAR_POP() : 모분산
- (계산식) {# \text{VAR_POP}(x) = \frac{1}{n} \sum (x_i-\bar{x})^2 #}
ㅇ VAR_SAMP() : 표본분산
- (계산식) {# \text{VAR_SAMP}(x) = \frac{1}{n-1} \sum (x_i-\bar{x})^2 #}
ㅇ STDDEV_POP() : 모표준편차
- (계산식) {# \text{STDDEV_POP}(x) = \sqrt{\text{VAR_POP}(x)} #}
ㅇ STDDEV_SAMP() : 표본표준편차
- (계산식) {# \text{STDDEV_SAMP}(x) = \sqrt{\text{VAR_SAMP}(x)} #}
※ 例) (GROUP BY 활용하여, 부서별 평균 급여 계산)
- SELECT department_id, AVG(salary) FROM employees GROUP BY department_id;