본문 바로가기

IT 기초/SQL

[SQL 활용] 연산자 및 함수 - 함수

특정 규칙에 의해 새로운 결과값을 반환하는 명령어

 

* 단일 행 함수, 복수 행 함수, 윈도우 함수


▶ 단일 행 함수

- 모든 행에 대하여 각각 함수가 적용되어 반환되며 여러 함수 중첩해서 사용가능

- 숫자형, 문자형, 날짜형, 형 변환, 일반

 

* 숫자형, 문자형

ABS(숫자): 절댓값 반환

ROUND(숫자, N) : N기준으로 반올림 값 반환 ex. ROUND(2.18, 1) -> 2.2

SQRT(숫자): 제곱근 값 반환 SQRT(9) -> 3

LOWER(문자), UPPER(숫자) : 소문자/ 대문자 반환

LEFT(문자,N), RIGHT(문자,N): 왼쪽으로/오른쪽으로 N번째 만큼 반환

LENGTH(문자) : 문자수 반환

 

* 날짜형

YEAR, MONTH DAY(날짜)

DATE_ADD(날짜, INTERVAL) : INTERVAL만큼 더한 값 반환

  ex. DATE_ADD(‘2022-12-31’, INTERVAL -1 MONTH) -> 2022-11-30

DATEDIFF(날짜a, 날짜b) : 날짜a – 날짜b 일수 반환

 

DATE_FORMAT(날짜, 형식) : 날짜형식으로 변환

  ex. DATE_FORMAT(‘2022-12-31’, ‘%m-%d-%y’) -> 12-31-22

        %M-%D-%Y 변경시 December-31st-2022

CAST(형식a, 형식b) : 형식a를 형식b로 변환

  ex. CAST(‘2022-12-31 12:00:00’ AS DATE) -> 2022-12-31

 

* 일반

IFNULL(A,B): ANULL이면 B를 반환, 아니면 A를 반환

CASE WHEN : 여러 조건 별로 반환값 지정

  CASE WHEN [조건1] THEN [반환1]

       ELSE [나머지 반환] END


▶ 복수 행 함수

- 여러 행들이 하나의 결과값으로 반환됨

- 주로 GROUP BY절과 함께 사용됨

- 집계함수, 그룹함수

 

* 집계함수

COUNT 행 개수

COUNT(DISTINCT ~ ) DISTINCT 중복제거, 중복제거한 행 개수

SUM 합계

AVG 평균

MAX 최댓값

MIN 최솟값

 

* 그룹함수

WITH ROLLUP : GROUP BY 열들을 오른쪽에서 왼쪽순으로 그룹화하는 명령어

GROUP BY 절 바로 아래 사용, 소계 및 합계를 조회할 수 있음


▶ 윈도우 함수

- 행과 행간의 관계를 정의하여 결과값을 반환

  ex. 주문일자에 대한 날짜 순위, 구매수량에 대한 누적 집계값을 결과값으로 반환

- ORDER BY로 행과 행간의 순서를 정하며 PARTITION BY로 그룹화 가능

 

순위 함수

ROW_NUMBER : 동일한 값이라도 고유한 순위 반환 (1,2,3,4,5---)

RANK : 동일한 값이면 동일한 순위 반환 (1,2,3,3,5)

DENSE_RANK : 동일한 값이면 동일한 순위 반환(+하나의 등수로 취급) (1,2,3,3,4)

 

윈도우 함수 작성법

ROW_NUMBER ( ) OVER (ORDER BY 순서기준 열이름 ASC)

 

순위함수에서 PARTITION BY 추가 (그룹별 순위를 반환)

ROW_NUMBER () OVER (PARTITION BY 회원별로 그룹화 ORDER BY 날짜 기준으로 ASC 오름차순으로

 

집계함수 (누적)

COUNT SUM AVG MAX MIN 작성 후 OVER (ORDER BY 열이름 ASC)

PARTITION BY로 그룹별 집계함수 누적 가능