MySQL
MySQL 내장 함수
WoodenStella
2023. 1. 16. 14:22
이번 게시글에서는 MySQL의 내장 함수 중 자주, 혹은 종종 쓰이는 함수들에 대해 알아보고자 한다.
이번 게시글에서의 함수 사용 시에는, 임의의 테이블인 dual을 from문에 위치시키는 것을 기본으로 한다.
1. 숫자 함수
- ABS(n): 절댓값
select abs(-4.5)
from dual;

- CEIL(n): 크거나 같은 최소의 정수 (올림)
select ceil(4.1)
from dual;

- FLOOR(n): 작거나 같은 최소의 정수(내림)
select floor(4.1)
from dual;

- ROUND(n, m): m번째 자리까지의 반올림
select round(4.17, 1)
from dual;

2. 문자 함수
- CONCAT('문자열', '문자열'): 여러 개의 문자열을 합침
select CONCAT('SQL ', 'PRACTICING')
from dual;

- LPAD, RPAD('문자열',정수,'문자'): 대상 문자열의 왼쪽 혹은 오른쪽에 지정한 자릿수만큼 지정한 문자로 채움(기존 문자 포함해서 카운팅)
select LPAD('1234', 7, '*')
from dual;

select RPAD('1234', 7, '*')
from dual;

- REPLACE('문자열', '문자열', '문자열'): 문자열 1의 문자열2를 문자열 3으로 바꿈
select REPLACE('hello python', 'python', 'mysql')
from dual;

- SUBSTR('문자열', 정수1, 정수2): 문자열을 정수1 위치부터 정수2만큼 잘라냄
select SUBSTR('ABCDEFG',1,3)
from dual;
*1번째(A)부터 시작해 3개의 문자 추출

3. 날짜 함수
- STR_TO_DATE('문자열', '포맷'): 문자열을 날짜형으로 반환
select STR_TO_DATE('2022-11-25', '%Y-%m-%d')
from dual;

- DATE_FORMAT('날짜','포맷'): 날짜형 데이터를 문자열(VARCHAR)로 반환
select DATE_FORMAT('2022-11-25','%Y-%m-%d')
from dual;

- DATEDIFF('날짜1', '날짜2'): 두 날짜 간의 차이 반환
select DATEDIFF('2022-02-14', '2022-11-25')
from dual;

마지막으로 날짜함수를 응용해보도록 하자.
현재 사용 중인 데이터에서, 월별 총 매출을 구해보고자 한다.
단계는 다음과 같다.
1. 날짜데이터는 잘라서 사용할 수 없으므로, 날짜데이터를 문자열 데이터로 변환 후 사용한다.
2. SUBSTR으로 연월까지의 문자열을 잘라낸다.
3. 연월이 일치하는 것들을 기준으로 그루핑한다.
4. saleprice를 합산해 노출시킨다.
코드로 정리하자면 다음과 같다.
select substring( date_format(orderdate, '%Y %m %d'),1 ,7 )as Year-Month, sum(saleprice) as Totalsales
from Orders
group by Year-Month;

데이터 기준으로는 2014년 7월밖에 없으므로, 다음과 같이 7월의 매출이 나온다.
이상으로 MySQL의 내장함수에 대해 알아보았다.