특정 규칙에 의해 새로운 결과값을 반환하는 명령어
* 단일 행 함수, 복수 행 함수, 윈도우 함수
▶ 단일 행 함수
- 모든 행에 대하여 각각 함수가 적용되어 반환되며 여러 함수 중첩해서 사용가능
- 숫자형, 문자형, 날짜형, 형 변환, 일반
* 숫자형, 문자형
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): A가 NULL이면 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로 그룹별 집계함수 누적 가능
'IT 기초 > SQL' 카테고리의 다른 글
[SQL 활용] View 및 Procedure (0) | 2023.04.04 |
---|---|
[SQL 활용] 연산자 및 함수 - 연산자 (0) | 2023.04.04 |
[SQL 문법] 서브 쿼리(Sub Query) (0) | 2023.04.01 |
[SQL 문법] 테이블 결합(JOIN) (0) | 2023.04.01 |
[SQL 기본구조] SQL 정의, 관계형 데이터베이스, SQL 명령어 (0) | 2023.03.31 |