본문 바로가기

📚Study Note

(118)
[ ORACLE ] GROUP BY GROUP BY ROLLUP() GROUPING() SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO ORDER BY DEPTNO; --===>> /* 108750 2010875 309400*/ SELECT DEPTNO "부서번호", SUM(SAL) "급여합" FROM EMP GROUP BY ROLLUP(DEPTNO); /* 10 8750 20 10875 30 9400 (NULL)29025*/ --→ 전체 합까지 나온다. SELECT * FROM TBL_EMP; -- ● 데이터 입력 INSERT INTO TBL_EMP VALUES (8001, '수지', 'CLERK', 7566, SYSDATE, 1500, 10, NULL); --==>> 1 행 이(가) 삽입되었습니다. INSERT INTO TBL_EMP VALUES ..
[ ORACLE ] 그룹함수 : SUM() AVG() COUNT() MAX() MIN() VARIANCE() STDDEV() -- ※ 그룹 함수의 가장 큰 특징은 -- 처리해야 할 데이터들 중 NULL이 존재하면 -- 이 NULL 은 제외하고 연산을 수행한다는 것이다 . -- ■■■ 그룹 함수 ■■■ --- SUM() 합 , AVG()평균, COUNT() 카운트, MAX() 최대값 , MIN() 최소값 --VARIANCE() 분산 , STDDEV() 표준편차 -- ※ 그룹 함수의 가장 큰 특징은 -- 처리해야 할 데이터들 중 NULL이 존재하면 -- 이 NULL 은 제외하고 연산을 수행한다는 것이다 . -- ●SUM() --EMP 테이블을 대상으로 전체 사원들의 급여 총합을 조회한다. SELECT SAL,SUM(SAL) FROM EMP; --===>> 오류뜸 SELECT SUM(SAL) FROM EMP; --==>>29025 ..
[ ORACLE ] RANK() DENSE_RANK() -- ● 문제 -- 서브쿼리를 활용하여 TBL_SAWON 테이블을 다음과 같이 조회할 수 있도록 한다. /* ------------------------------------------------------------------ 사원명 성별 현재나이 급여 나이보너스 ------------------------------------------------------------------ 단, 나이보너스는 현재 나이가 40세 이상이면 급여의 70% 30세 이상 40 세 미만이면 급여의 50% 20세 이상 30세 미만이면 급여의 30% 또한, 완성된 조회 구문을 기반으로 VIEW_SAWON2 라는 이름의 VIEW 를 생성한다. */ CREATE OR REPLACE VIEW VIEW_SAWON2 AS SELECT..
[ ORACLE ] SUB_QUERY, CREATE AND REPLACE 'VIEW' SELECT T.연봉 * 2 "연봉두배" FROM { SELECT 연봉 FROM TBL_EMP }T; --● 문제 -- TBL_SAWON 테이블을 활용하여 다음과 같은 항목들을 조회한다. -- 사원번호, 사원명, 주민번호, 성별, 현재나이, 입사일, -- 정년퇴직일, 근무일수, 남은일수 , 급여, 보너스 -- 단, 현재나이는 한국나이 계산법에 따라 연산을 수행한다. -- 또한 , 정년퇴직일은 해당 직원의 나이가 한국나이로 60 세가 되는 해(년도)의 -- 그 직원의 입사 월, 일로 연산을 수행한다. -- 그리고 보너스는 1000일 이상 2000일 미만 근무한 사원은 -- 그 사원의 원래 급여 기준 30% 지급 -- 2000일 이상 근무한 사원은 그 사원의 원래 급여 기준 50% 할 수 있도록 처리한다. ..
[ ORACLE ] CASE 구문(조건문, 분기문 ) / CASE WHEN THEN ELSE END 구문 DECODE() -- ■■■ CASE 구문(조건문 , 분기문)■■■ /* CASE WHEN THEN ELSE END 구문으로 부른다. 케이스웬덴엘스엔드 */ SELECT CASE 5+2 WHEN 7 THEN '5+2=7' ELSE '5+2는 몰라요' END "결과 확인" FROM DUAL; --==>> 5+2=7 SELECT CASE 5+2 WHEN 9 THEN '5+2=9' ELSE '5+2는몰라요' END "결과확인" FROM DUAL; --==>>5+2는몰라요 SELECT CASE 1+1 WHEN 2 THEN '1+1=2' WHEN 3 THEN '1+1=3' WHEN 4 THEN '1+1=4' ELSE '몰라' END "결과 확인" FROM DUAL; --==>> 1+1=2 -- ● DECODE() SELECT D..
[ ORACLE ] 변환함수 TO_CHAR() TO_DATE() TO_NUMBER() EXTRACT() TO_YMINTERAL() TO_DSINTERVAL() -- ■ 변환 함수 /* TO_CHAR() : 숫자나 날짜 데이터를 문자 타입으로 변환시켜주는 함수 TO_DATE() : 문자 데이터(날짜 형식)를 날짜 타입으로 변환시켜주는 함수 TO_NUMBER() : 문자 데이터(숫자 형식)를 숫자 타입으로 변환시켜주는 함수*/ SELECT 10 "숫자 10이다", TO_CHAR(10) "문자형태의 10이다" FROM DUAL; --==>> (우측정렬)(좌측정렬) 1010 -- ※ 날짜나 통화 형식이 맞지 않을 경우 세션 설정값을 통해 -- 설정할 수 있도록 한다, ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN'; --===>>Session이(가) 변경되었습니다. ALTER SESSION SET NLA_LANGUAGE = 'KOR..
[ ORACLE ] 날짜연산, ADD_MONTH() MONTHS_BETWEEN NEXT_DAY() LAST_DAY() 날짜ROUND() 날짜TRUNC() -- ※ 날짜 관련 세션 설정 변경 ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; --==>>Session이(가) 변경되었습니다. -- ※ 날짜 연산의 기본 단위는 DAY(일수) 이다. ★ SELECT SYSDATE, SYSDATE+1, SYSDATE-2, SYSDATE+3 FROM DUAL; /* 2021-03-29 12:04:08-- 현재 2021-03-30 12:04:08-- 1일 후 2021-03-27 12:04:08-- 2일 전 2021-04-01 12:04:08 -- 3일 후 */ -- ○ 시간 단위 연산 SELECT SYSDATE, SYSDATE + 1/24, SYSDATE - 2/24 FROM DUAL; /* 2021-03-29..
[ ORACLE ] ROUND() TRUNC() MOD() POWER() SQRT() LOG() SIN/ASIN() COS/ACOS() TAN/ATAN() SIGN() ASCII() CHR() -------------------------------------------------------------------------------- -- 숫자형 함수 --● ROUND() 반올림 처리해주는 함수 SELECT 48.678 "1" , ROUND(48.678,2) "2" --- 소수점 둘째자리까지 표현 , ROUND(48.674,2) "3" , ROUND(48.678,1) "4" , ROUND(48.678,0) "5" , ROUND(48.678) "6" , ROUND(48.678,-1) "7" -- 10의 자리까지 유효한 표현 , ROUND(48.678,-2) "8" , ROUND(48.678,-3) "9" FROM DUAL; --==>>48.67848.6848.6748.749495000 -- ●..