데이터 분석/초보자를 위한 SQL 200제

초보자를 위한 SQL 200제 초급(ROUND, TRUNC, MOD, FLOOR, NEXT_DAY, TO_CHAR)

예스리코드 2023. 1. 18. 17:00

반올림해서 출력하기
ROUND(데이터, 자릿수)

SELECT '876.567' AS 숫자, ROUND(876.567,1)
FROM DUAL

# 결과 : 876.6

 

숫자를 버리고 출력하기
TRUNC(데이터, 자릿수)

SELECT '876.567' AS 숫자,TRUNC(876.567,1)
FROM DUAL

# 결과 : 876.5
숫자 8 7 6 . 5 6 7
자리 -3 -2 -1 0 1 2 3

 

나눈 나머지 값 출력하기
MOD(데이터, 나누는 값)

# EMPNO가 짝수인 ENAME 출력
SELECT EMPNO, ENAME
FROM EMP
WHERE MOD(EMPNO,2) = 0

 

나눈 몫 출력하기
FLOOR(데이터, 나누는값)

SELECT FLOOR(10/3)
FROM DUAL

# 결과 : 3

 

날짜 간 개월 수 출력하기
MONTHS_BETWEEN(SYSDATE, 데이터)

SELECT ENAME, ROUND(MONTHS_BETWEEN(SYSDATE, HIREDATE),0)
FROM EMP

 

개월 수 더한 날짜 출력하기
ADD_MONTHS(날짜, 더하고자 하는 달 수)

# 100달 뒤
SELECT ADD_MONTHS(TO_DATE('2019-05-01','RRRR-MM-DD'),100)
FROM DUAL

# + 산술 연산으로 더하는 법(1년 3개월 뒤)
SELECT TO_DATE('2019-05-01', 'RRRR-MM-DD') + INTERVAL'1-3' YEAR(1) TO MONTH
FROM DUAL

# 100일 뒤
SELECT TO_DATE('2019-05-01','RRRR-MM-DD')+100
FROM DUAL

 

특정 날짜 뒤에 오는 요일 날짜
NEXT_DAY(날짜, 원하는 요일)

# 100달 뒤 돌아오는 월요일
SELECT NEXT_DAY(ADD_MONTHS(SYSDATE,100),'MONDAY') AS "100달 뒤 돌아오는 월요일"
FROM DUAL

 

특정 날짜가 있는 달의 마지막 날짜 출력하기
LAST_DAY(날짜)

# 19년 5월의 마지막 날짜 추출
SELECT '2019/05/22' AS "날짜", LAST_DAY(TO_DATE('2019/05/22', 'RRRR-MM-DD')) AS "마지막 날짜"
FROM DUAL

# KING의 입사한 달의 마지막 날짜
SELECT ENAME, HIREDATE, LAST_DAY(HIREDATE)
FROM EMP
WHERE ENAME ='KING

 

문자형으로 데이터 유형 변환하기
TO_CHAR(데이터, 원하는 유형)
# KING의 이름, 고용날짜, 고용연도, 고용달, 월급(천 단위)
SELECT ENAME, HIREDATE, TO_CHAR(HIREDATE,'RRRR') AS "연도", TO_CHAR(HIREDATE, 'MM') AS "달", TO_CHAR(SAL, '999,999') AS "월급"
FROM EMP
WHERE ENAME = 'KING'

# 1981년에 입사한 사람들
SELECT ENAME, HIREDATE
FROM EMP
WHERE TO_CHAR(HIREDATE, 'RRRR') = '1981'

# 사원들의 연월일 추출 
SELECT ENAME AS 이름, EXTRACT(YEAR FROM HIREDATE) AS 연도, EXTRACT(MONTH FROM HIREDATE) AS 월, EXTRACT(DAY FROM HIREDATE) AS 일
FROM EMP


# 원화를 붙인 백만 단위 월급 표시
SELECT ENAME AS 이름, TO_CHAR(SAL*200, 'L999,999,999') AS 월급
FROM EMP