📚Study Note/ORACLE (44) 썸네일형 리스트형 [ ORACLE ] 92, 99 코드를 활용한 세 개 이상의 테이블 JOIN SELECT USER FROM DUAL; -- ● 세 개 이상의 테이블 조인(join) -- 형식 1(SQL 1992 CODE) -- 형식 2(SQL 1999 CODE) -- 형식 1(SQL 1992 CODE) SELECT A.컬럼명, B.컬럼명, C.컬럼명 FROM A,B,C WHERE A.컬럼명1 = B.컬럼명1 AND B.컬럼명2 = C.컬럼명2; -- 형식 2(SQL 1999 CODE) SELECT A.컬럼명, B.컬럼명, C.컬럼명 FROM A JOIN B ON A.컬럼명1 = B.컬럼명1 JOIN C ON B.컬럼명2 = C.컬럼명2; -- ● HR계정 소유의 테이블 또는 뷰 목록 조회 SELECT * FROM TAB; /* COUNTRIES TABLE DEPARTMENTS TABLE EMPL.. [ ORACLE ] JOIN(조인) Equi join Non Equi join CROSS/INNER/OUTER JOIN 부모자식테이블 SELF JOIN --------------------------------------------------------------------------- --■■■ JOIN(조인) ■■■ --관계형 데이터베이스에서 큰테이블은 바람직하지않다. --나누고분리한테이블 원래형태로보이게하려면 결합필요 그게조인이다 -- ●1. SQL 1992 CODE -- ●2. SQL 1999 CODE (92년 99년 으로 표준된 코드 두 개로 나뉜다. 실무에서는 둘다쓰인다) -- ●1. SQL 1992 CODE SELECT * FROM EMP,DEPT; --> 수학에서 말하는 데카르트 곱(CATERSIAN PRODUCT) -- 두 테이블을 합친(결합한) 모든 경우의 수 -- ●Equi join : 서로 정확히 일치하는 데이터들끼리 연결시키는 결.. [ ORACLE ] ROW_NUMBER() SEQUENCE -----■■■ ROW_NUMBER() ■■■■ SELECT ENAME "사원명", SAL "급여", HIREDATE "입사일" FROM EMP; /* SMITH800 1980-12-17 ALLEN16001981-02-20 WARD12501981-02-22 JONES29751981-04-02 MARTIN12501981-09-28 BLAKE28501981-05-01 CLARK24501981-06-09 SCOTT30001987-07-13 KING50001981-11-17 TURNER15001981-09-08 ADAMS11001987-07-13 JAMES950 1981-12-03 FORD30001981-12-03 MILLER13001982-01-23*/ SELECT ROW_NUMBER() OVER (ORDER.. [ ORACLE ] 중첩 그룹함수 / 분석 함수 서브상관쿼리 --■■■ 중첩 그룹함수 / 분석 함수 ■■■ -- 그룹 함수 2 LEVEL 까지 중첩해서 사용할 수 있다. -- 이마저도 MS-SQL 은 불가능하다. SELECT MAX(SUM(SAL)) FROM EMP GROUP BY DEPTNO; --===>> 10875 -- RANK() -- DENS_RANK() -- > 이 함수는요 함수 안에서 정렬기능 포함 리소스소모심함 -- 그런데 함수가 생긴지 얼마 안됨. ORCLA 9i 부터 적용되었고 -- MSSQL 2005 부터 적용... -- ※ 하위 버전에서는 RANK() 나 DENSE_RANK() 를 사용할 수 없기 때문에 -- 이를 대체하여 연산을 수행할 수 있는 방법을 강구해야 한다. -- 예를 들어, 급여의 순위를 구하고자 한다면... SELECT ENAM.. [ ORACLE ] HAVING 절 -- ■■■ HAVING ■■■-- -- ● EMP 테이블에서 부서번호가 20, 30 인 부서를 대상으로 -- 부서의 총 급여가 10000보다 적을 경우만 부서별 총 급여를 조회한다. SELECT DEPTNO, SUM(SAL) FROM EMP WHERE DEPTNO IN (20,30) GROUP BY DEPTNO; /* 309400 2010875 */ SELECT DEPTNO, SUM(SAL) FROM EMP WHERE DEPTNO IN (20,30) AND SUM(SAL) < 10000 GROUP BY DEPTNO; /* ORA-00934: group function is not allowed here 00934. 00000 - "group function is not allowed here" *Cau.. [ORACLE ] ROLLUP() CUBE() GROUPING SETS() SELECT USER FROM DUAL; --==>>SCOTT SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN TO_CHAR(DEPTNO) ELSE '모든부서' END "부서번호" , SUM(SAL) "급여합" FROM TBL_EMP GROUP BY ROLLUP(DEPTNO); /* 10 8750 20 10875 30 9400 (널) 8000 모든부서37025*/ SELECT CASE GROUPING(DEPTNO) WHEN 0 THEN NVL(TO_CHAR(DEPTNO),'인턴') ELSE '모든부서' END "부서번호" , SUM(SAL) "급여합" FROM TBL_EMP GROUP BY ROLLUP(DEPTNO); /* 10 8750 20 10875 30 9400 인턴 800.. [ 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 .. 이전 1 2 3 4 5 6 다음