일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ETCL
- 백준
- 2022 마이데이터 국민참여단 후기
- 무결성제약조건
- 오라클
- 구름Level
- EBH
- K-MOOC
- 고전압안전
- 마이데이터 개념과 원칙
- 계층적질의문
- 대용량 데이터 Batch
- 대용량데이터 처리방안
- 코딩테스트
- 데이터 허브
- K-MOOC 매치업 강좌
- sql
- 코테
- 대용량 데이터 처리
- 마이데이터 개념
- K-MOOC 3주차
- 마이데이터 국민참여단
- 2주차 : ETL/CDC
- 마이데이터 비즈니스 모델
- 측정계
- 1주차:메타데이터와 데이터표준화
- 데이터 이행
- GROUP함수
- 대용량 데이터 이행
- dbms
- Today
- Total
어제보다 더 나은 나
DBMS(오라클) : 숫자함수, 날짜함수, 일반함수, 그룹함수 본문
* 숫자 함수
* ROUND : 지정한 소수점 자리 이하에서 결과 값을 반환하는 함수
* TRUNC : 지정한 소수점 자리 수 이하를 자른 결과를 반환하는 함수
* MOD : m을 n으로 나눈 나머지
* CEIL : 지정한 값보다 큰 수 중에서 가장 작은 정수
* FLOOR : 지정한 값보다 작은 수 중에서 가장 큰 정수
* 날짜 함수 : 날짜 데이터 타입에 사용하는 함수
* 날짜 + 숫자 : 날짜에 일수를 더한 날짜 계산
* 날짜 - 숫자 : 날짜에 일수를 뺀 날짜 계산
* 날짜 - 날짜 : 날짜와 날짜를 뺀 일수를 계산
* 날짜 + 숫자 / 24 : 날짜에 시간을 가산하여 날짜 계산
* SYSDATE : 현재 시스템의 현재 날짜
* MONTH_BETWEEN, ADD_MONTHS : 월 단위로 날짜 연산을 하는 함수
* LAST_DAY : 해당 날짜가 속한 달의 마지막 날짜를 반환하는 함수
* NEXT_DAY : 해당 일을 기준으로 명시된 요일의 다음 날짜를 변환하는 함수
* 날짜 함수 + ROUND, TRUNC 함수
* 형 변환 함수
* TO_CHAR : 숫자/날짜 타입을 문자로 변환 후 출력 형식 변경
# 예제 : 보직수당을 받는 교수들의 이름, 급여, 보직수당 그리고 급여와 보직수당을 더한 값에 12를 곱합 결과를 연봉으로 출력하라.
# 예제 : 자신이 출생한 지 며칠째인지, 출생일로부터 현재일까지의 개월 수를 출력하라. (개월 수는 반올림을 사용)
* 일반 함수
* NVL 함수 : NULL을 0 또는 다른 값으로 변환하기 위한 함수
# 예제 : 사원의 이름과 보너스를 출력하고 사원이 보너스를 받지 않는다면 'No Commission'을 출력하라.
* NVL2 함수 : 첫 번째 인수 값이 NULL이 아니면 두 번째 인수 값을 출력하고, 첫 번째 인수 값이 NULL이면 세 번쨰 인수 값을 출력하는 함수
* NULLIF 함수 : 2개의 표현식을 비교하여 값이 동일하면 NULL을 반환하고, 일치하지 않으면 첫 번째 표현식의 값을 반환
* COALESCE 함수 : 인수 중에서 NULL이 아닌 첫 번째 인수를 반환하는 함수
* DECODE 함수 : IF문이나 CASE 문으로 표현되는 복잡한 알고리즘을 하나의 SQL 명령문으로 간단하게 표현할 수 있는 유용한 기능
# 예제 : 학생 테이블에서 학과번호와 이름, 학과명을 출력하되 101번 학과 학생들만 'Computer Science'로 출력하고 101번 아닌 학생들의 학과명을 'ETC'로 출력하세요 ('황보_정호' 학생은 제외할 것)
# 예제 : 학생 테이블에 주민등록번호를 참조하여 이름, 학번, 태어난 달, 분기를 출력하세요 (1/4, 2/4, 3/4, 4/4)
* Group 함수 : 전체 행을 하나 이상의 컬럼을 기준으로 그룹화하여 그룹별로 결과를 출력하는 함수
* GROUP BY : 전체 행을 일정 표현을 기준으로 그룹화
* HAVING : GROUP BY 절에 의해 생성된 그룹별로 조건 부여
* AVG 함수
* SUM 함수
* MAX 함수
* MIN 함수
* STDDEV 함수
* VARIANCE 함수
# 예제 : 모든 사원의 최대 급여, 최저 급여, 합계 그리고 평균 급여를 출력하세요. 열 레이블은 Maximum, Minimum, Sum 그리고 Average 입니다. 소수점에서 결과를 반올림 하십시오.
* GROUP BY 절 : 특정 칼럼 값을 기준으로 테이블의 전체 행을 그룹별로 나누기 위한 절
=> 그룹핑 전에 WHERE 절을 사용하여 그룹 대상 집합을 먼저 선택
=> GROUP BY 절에는 반드시 칼럼 이름을 포함해야 하며 칼럼 별명은 사용할 수 없음
=> 그룹별 출력순서는 오름차순
=> SELECT 절에서 나열된 칼럼이나 표현은 반드시 GROUP BY 절에 명시
=> GROUP BY 절에서 명시한 칼럼 이름은 SELECT절에서 명시하지 않아도 된다.
=> GROUP BY 절에서 대문자로 칼럼이름을 표기하고 SELECT 절에서 소문자로 칼럼 이름을 표기하여도 오류가 발생!!
* 다중 컬럼을 이용한 그룹핑 : 하나 이상의 카럼을 사용하여 그룹을 나누고, 그룹별로 다시 서브 그룹을 나눔.
* ROLLUP 연산자 : GROUP BY 절의 그룹 조건에 따라 전체 행을 그룹화하고 각 그룹에 대해 부분합을 구하는 연산자
=> GROUP BY 절에 칼럼의 수가 n개 이면 ROLLUP 그룹핑 조합은 n+1개
* CUBE 연산자 : ROLLUP에 의한 그룹 결과와 GROUP BY 절에 기술된 조건에 따라 그룹 조합을 만드는 연산자
=> GROUP BY 절에 칼럼의 수가 n개 이면 CUBE 그룹핑 조합은 2n개
* GROUPING 함수 : 인수로 지정된 칼럼이 ROLLUP 이나 CUBE 연산자로 생성된 그룹 조합에서 사용되었는지 여부를 1 or 0으로 반환 (사용하면 0, 아니면 1)
* GROUPING SETS 함수 : GROUP BY 절에서 그룹 조건을 여러 개 지정할 수 있는 함수. 각 그룹 조건에 대해 별도로 GROUP BY한 결과를 UNION ALL한 결과와 동일
# 예제 1 : 사원 테이블(EMP)에서 최대 급여와 최소 급여 사이의 차이를 출력하는 질의를 작성하세요.
# 예제 2 : 사원명, 입사일 그리고 입사한 요일을 출력하세요. 열 레이블은 DAY 입니다.
(***결과는 월요일부터 시작하는 요일 순으로 정렬하세요.)
ENAME HIREDATE DAY
-------------------- -------- ------------------------
ADAMS 87/07/13 월요일
SCOTT 87/07/13 월요일
MARTIN 81/09/28 월요일
CLARK 81/06/09 화요일
# 예제 3 : 1980, 1981, 1982, 1987년에 입사한 사원에 대해 전체 사원 수와 연도별 사원 수를 출력하세요.
TOTAL 1980 1981 1982 1987
---------- ---------- ---------- ---------- ----------
14 1 10 1 2
'데이터분석 공부 > DBMS 공부' 카테고리의 다른 글
DBMS(오라클) : 주석, 데이터무결성, 인덱스, 뷰, DCL, DDL, DML (0) | 2022.07.05 |
---|---|
DBMS(오라클) : 서브쿼리, DDL, DML, DCL, TCL, 시퀀스 (0) | 2022.07.04 |
DBMS(오라클) : HAVING 절, JOIN 함수 (0) | 2022.07.01 |
DBMS(오라클) : ORDER BY문, SQL-PLUS (0) | 2022.06.29 |
DBMS(오라클) : DB 연결 확인 (0) | 2022.06.27 |