문제4. SQL / rollup하여 생긴 null값에 데이터 입력하기
[처음 쓴 코드] select deptno, case when deptno is null then decode(to_char(grouping(job)),1,'전체토탈',job) when job is null then decode(to_char(grouping(job)),1,'부서토탈',job) else job end as job2, sum(sal) from emp group by rollup(deptno, job); 처음 쓴 코드로도 문제가 풀렸으나, decode 함수를 굳이 써야 하는지 의문이 생김 [수정코드] -- 수정코드1 select deptno, case when deptno is null then '전체토탈' when job is null then '부서토탈' else job end as jo..
sql기본 / rollup, cube, grouping sets, row_number
ㅁ 복습 - 옵티마이져 : 스스로 학습해서 오라클 환경에서 돌아가는 SQL들의 성능을 높이는 기능 - 함수 1. 단일행 함수 : 문자, 숫자, 날짜, 변환, 일반 2. 복수행 함수 : max, ,min, avg, sum, count 3. 데이터 분석함수 : rank, dense_rank, ntile, listagg, cume_dist, lag, lead, sum() over (), ratio_to_report(), sum+decode, pivot, unpivot, rollup ㅇrollup을 사용한 현업사례 문제 239. 부서번호, 직업, 부서번호별 직업별 토탈월급을 출력하시오 select deptno, job, sum(sal) from emp group by deptno, job order by dep..
문제3. SQL / class_type, 통신사, 인원수를 출력하기
[내가 쓴 코드] select class_type, 통신사, count(*) from (select class_type, decode(lower(telecom), 'skt','sk',lower(telecom)) as 통신사 from emp14) group by rollup( class_type, 통신사); [다른 사람이 쓴 코드] --1 select class_type, decode(lower(telecom),'skt','sk',lower(telecom)), count(*) from emp14 group by rollup ( class_type, decode(lower(telecom),'skt','sk',lower(telecom))); --2 create or replace view emp14_telec..
sql기본 / 데이터 분석 함수(unpivot, sum+over, ratio_to_report, rollup)
ㅁ복습 1. 오라클 설치 2. 데이터를 검색하는 select문의 6가지 절 select 컬럼명 from 테이블명 where 검색조건(일반조건) group by 그룹핑 할 명 having 그룹함수로 검색조건 order by 정렬순서 (실행순서 : from > where > group by > having > select > order by) 3. 함수 - 단일행 함수 : 문자, 숫자, 날짜, 변환, 일반 - 복수행 함수 : max,min,avg, sum, count - 데이터 분석 함수 : rank, dense_rank, ntile, cume_dist, listagg, lag, lead, pivot 049 COLUMN를 ROW으로 출력하기(UNPIVOT) ㅁ스크립트 생성 1. order2 테이블 생성 dr..
sql 기본 / 데이터분석함수(dense_rank, ntile, cume_diste, listagg, lad, lead, sum+decode, pivot)
042 데이터 분석 함수로 순위 출력하기 2(DENSE_RANK) /*이름과 직업과 월급과 순위를 출력하는데 그 옆에 순위가 동일한 사람이 여러명인 경우 바로 다음 순위가 출력되게 하시오*/ select ename, job, sal, rank() over (order by sal desc) as 순위, dense_rank() over (order by sal desc) 순위2 from emp where job in ( 'ANALYST','SALESMAN'); 문제173. 부서번호, 이름, 입사일, 먼저 입사한 사원순으로 순위를 출력하시오(dense_rank를 사용) select deptno, ename, hiredate, dense_rank() over (order by hiredate asc) 순위 f..