본문 바로가기

오라클

오라클 분석 함수( RANK OVER() / ROW_NUMBER() OVER() ) -- 분석 함수 -- RANK OVER() -- ROW_NUMBER() OVER() ** 중요 제일 많은 씀 ** -- 순위를 구함. -- RANK() OVER()는 동일 순위인 경우 1,1,3, 형식으로 출력하지만 -- ROW_NUMBER() OVER()는 동일 순위인 경우 1,2,3, 형식으로 출력 -- DENSE_RANK() OVER()는 동일 순위인 경우 1,1,2 형식으로 출력 -- ROW_NUMBER() OVER()는 매우매우매우 중요한 함수이므로 반드시 알아 둘것 !!!!!!!!!!!!!!!!!!!!!!! --기본급 내림차순으로 순위를 구하기 SELECT name, basicpay, RANK() OVER(ORDER BY basicpay DESC) 순위 FROM insa; -- 비교데이타가 똑.. 더보기
오라클 ROLLUP,CUBE,GROUPINGSET 그룹화 함수 --ROLLUP : 그룹화하고 그룹에 대한 부분합 -- CUBE : ROLLUP 결과에 GROUP BY 절의 조건에 따라 모든 가능한 그룹핑 조합에 따른 결과 출력 SELECT buseo,jikwi, SUM(basicpay) FROM insa GROUP BY buseo,jikwi; SELECT buseo,jikwi, SUM(basicpay) FROM insa GROUP BY ROLLUP (buseo,jikwi); -- 직위의 null 값이 들어간부분이 합이다. SELECT buseo,jikwi, SUM(basicpay) FROM insa GROUP BY CUBE(buseo,jikwi); --null null 총합 / 부서 null 직위의 합/ 직위 null 부서의 합/ -- GROUPING SET : G.. 더보기
오라클 ROWNUM : 쿼리의 결과의 각각의 행 순서 값을 갖는 의사 컬럼 --ROWNUM : 쿼리의 결과의 각각의 행 순서 값을 갖는 의사 컬럼 -- 주의 : ORDER BY 절이 있으면 사용하지 말것, WHERE 절에서 사용하지 말것. -- 단, ROWNUM =1로는 비교 가능 SELECT ROWNUM ㅋㅋ다스, name, basicpay FROM insa; SELECT ROWNUM, name, basicpay FROM insa ORDER BY basicpay DESC; --이상한 현상 발생 SELECT ROWNUM, name, basicpay FROM( SELECT name,basicpay FROM insa ORDER BY basicpay DESC) WHERE ROWNUM >= 10 AND ROWNUM =10 AND rnum 더보기
오라클 GROUP BY : 그룹별 통계 GROUP BY 그룹별 통계(똑같은 데이타를 하나의 행으로 묶어준다) 그룹바이에 사용될 컬럼은 셀렉트문에 사용된 컬럼이여야 가능하다. 집계함수와 GROUP BY를 같이 쓰면 일반컬럼과도 사용가능하다. 예제 ) 부서별 급여의 합 계산 SELECT buseo , SUM(basicpay) FROM insa; => 에러가 난다 (부서는 여러행 , 합은 하나의 행이므로 에러) 집계함수(SUM)를 GROUP BY문 없이 사용할때 나타나는 에러 : 단일 그룹의 그룹 함수가 아닙니다) SELECT buseo , SUM(basicpay) FROM insa GROUP BY buseo; => GROUP BY에 있는 컬럼만 SELECT문에서 사용 가능함 예제 )부서별 직위별 인원수 SELECT buseo, jikwi, COU.. 더보기
오라클 WHERE절에서 SELECT문 사용하기 -- SELECT 문의 결과가 하나의 컬럼이면 WHERE 절에서 SELECT 문을 사용 할 수 있다. -- 단, IN 연산자가 아니고 관계연산자인 경우 결과가 하나의 행 이어야 한다. -- 최대 급여를 받는 사람은 ?SELECT name, basicpay FROM insa WHERE basicpay = (SELECT MAX(basicpay) FROM insa); -- 최소 급여를 받는 사람은 ?SELECT name, basicpay FROM insa WHERE basicpay = (SELECT MIN(basicpay) FROM insa); -- 급여가 평균 미만인 사람 ?SELECT name, basicpay FROM insa WHERE basicpay < (SELECT AVG(basicpay) FROM.. 더보기
오라클 집계함수(성능이 많이 떨어짐) -- 집계함수(성능이 많이 떨어짐)--주의 : 집계함수는 WHERE 절에서 사용 할 수 없으며, GROUP BY를 사용하지 않는 경우 일반 컬럼과 사용불가능이며 결과는 한줄(행이 하나)로 출력된다.COUNT : 행의 개수 (NULL은 제외)SUM : 합AVG : 평균 (NULL은 제외)STDDEV : 표준편차 (NULL은 제외)VARIANCE : 분산 (NULL은 제외)MAX : 최대값MIN : 최소값 --일반적으로 전체 행수를 구하기 위해서는 *, 또는 NULL을 허용하지 않는 컬럼(예:기본키)를 사용한다.SELECT COUNT(*) FROM insa; -- 전체 행수SELECT COUNT(num) FROM insa; -- 전체 행수SELECT COUNT(tel) FROM insa; -- tel 컬럼 .. 더보기
오라클 집합연산자 -- 집합 연산자 --UNION : 합집합(중복데이터는 한번만 출력)SELECT name, city, buseo FROM insa WHERE city='서울';=>서울만 출력SELECT name, city, buseo FROM insa WHERE buseo='개발부';UNIONSELECT name, city, buseo FROM insa WHERE city='서울';=>개발부 데이타 가지고 있으면 출력, 서울 데이타 가지고 있으면 출력(개발부이면서 서울인 데이타는 한번만 출력) -- UNION ALL: 합집합(중복데이터 다나옴) SELECT name, city , buseo FROM insa WHERE buseo='개발부'UNION ALLSELECT name, city, buseo FROM insa WH.. 더보기
오라클 DECODE : 각각의 조건에 맞는 값에 대한 처리 결과 리턴(CASE 보다 성능 떨어짐) -- DECODE : 각각의 조건에 맞는 값에 대한 처리 결과 리턴(CASE 보다 성능 떨어짐)SELECT name, ssn, DECODE(SUBSTR(ssn, 8,1),1, '남자', 2,'여자', 3, '남자', 4,'여자')성별 FROM insa; SELECT name, ssn, DECODE(MOD(SUBSTR(ssn, 8,1),2), 0, '여자', 1, '남자')성별 --MOD 나머지 구한값 -- 나머지가 0이면 여자 FROM insa; SELECT name, ssn, DECODE(SUBSTR(ssn, 8,1),1, '남자', 2,'여자', 3, '남자', 4,'여자')성별 FROM insa; SELECT name, ssn, DECODE(SUBSTR(ssn, 8,1),1, '남자')성별 -- 만.. 더보기