국비지원수업
ORACLE[27일차](2) 날짜 함수 , 집계 함수,GROUP BY
둥구는 지굴다
2022. 11. 30. 20:05
날짜 함수
SYSDATE
- 오라클이 설치된 컴퓨터의 시스템 시간을 알려준다.
- 년-월-일-시-분-초까지 표현 가능
SELECT SYSDATE FROM DUAL;
SYSTIMESTAMP
- 시스템에서 현재 시간을 가져옴
- 년-월-일-시-분-초-밀리세컨드까지 표현 가능
SELECT SYSTIMESTAMP FROM DUAL;
시간 확인해보기
SELECT SYSDATE,SYSTIMESTAMP
FROM DUAL;
TO_DATE(’ 문자열’,’ 날짜 포맷’)
문자열을 DATE형식으로 변환해 준다.
날짜를 적었다면 날짜 포맷도 적어주어야 한다.
SELECT TO_DATE('2022-11-30','YYYY-MM-DD'),TO_DATE('2022-11-30-7:30','yyyy-mm-dd HH24:MI')
FROM DUAL;
TO_CHAR(숫자 혹은 날짜, FORMAT)
숫자나 날짜를 문자로 변환해주는 함수이다.
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD');
SYSDATE 즉, 현재 날짜와 시간을 설정한 형식에 맞추어 가져왔다.
집계 함수
- 집계 함수란 여러 개의 행으로부터 하나의 결괏값을 반환하는 함수입니다.
- SELECT 구문에서만 사용이 가능합니다.
- WHERE절에서는 집계 함수를 사용할 수 없습니다.
- 서브 쿼리에서는 집계 함수를 사용할 수 있습니다.
SUM( ) :합계
AVG( ) : 평균
COUNT ( ): 개수
MAX ( ): 최대 값
MIN( ) 최소 값
GROUP BY
GROUP BY는 특정 컬럼을 그룹화할 때 사용합니다.
HAVING : 그룹화한 결과에 조건을 걸 수 있습니다.
⚠️ WHERE과 HAVING의 차이는 WHERE은 그룹화하기 전의 조건이고, HAVING은 그룹화 후에 조건을 의미합니다.
사용법
SELECT [컬럼] FROM [테이블]
GROUP BY [그룹화할 컬럼]
HAVING [조건식];
[GROUP BY를 사용하여 직업별로 급여 평균 출력하기]
SELECT JOB_TITLE 직업,AVG(E.SALARY) "급여 평균" FROM JOBS J JOIN EMPLOYEES E
ON J.JOB_ID=E.JOB_ID
GROUP BY JOB_TITLE;
[DEPARTMENT_ID가 같은 인원의 SALARY 중 평균이 5000 이상인 부서와 SALARY의 평균값을 출력하고 그 값을 반올림하시오]
SELECT DEPARTMENT_ID 부서번호,ROUND(AVG(SALARY)) 월급 FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING AVG(SALARY)>=5000;