목록전체 글 (73)
으나님의 잡다한 개발상식
1) WINDOW 함수란? - 관계형 DB는 컬럼과 컬럼 간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면, 행과 행 간의 관계를 정의하거나 행과 행 간을 비교, 연산하는 것을 하나의 SQL로 처리하는 것이 매우 어렵다. - WINDOW함수는 행과 행 간의 관계를 정의하기 위해 제공되는 함수이다. - WINDOW함수를 통해 순위, 합계, 평균, 행 위치 등을 조작할 수 있다. 2) WINDOW 함수 종류 - 그룹 내 순위함수(RANK) : RANK, DENSE_RANK, ROW_NUMBER - 그룹 내 집계함수(AGGREGATE) : SUM, MAX, MIN, AVG, COUNT - 그룹 내 행 순서 관련함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD - 그룹 내 비율관련..
1) ROLLUP - GROUP BY 컬럼에 대하여 SUBTOTAL을 만드는 함수 - ROLLUP을 할 때 GROUP BY 구에 컬럼이 두 개 이상 오면 순서에 따라서 결과가 달라짐 - GROUPING COLUMN 수를 N이라고 했을 때 N+1 LEVEL의 SUBTOTAL이 생성됨 2) GROUPING - ROLLUP, CUBE, GROUPING SETS에서 생성되는 합계값을 구분하기 위해 만들어진 함수 - 소계, 합계 등이 계산되면 GROUPING 함수는 1을 반환하고, 그렇지 않으면 0을 반환해서 합계 값을 식별할 수 있음 3) GROUPING SETS - GROUPING SETS 함수는 GROUP BY에 나오는 컬럼의 순서와 관계없이 다양한 소계를 만들 수 있으며, 개별적으로 모두 처리함 - UNI..
1) 인라인 뷰 FROM 구에 SELECT 문 사용 2) 스칼라 서브쿼리 - SELECT 문에 서브쿼리 사용 - 반드시 한 행과 한 컬럼만 반환하여야 하며 여러 행이 반환되면 오류가 발생함 3) 서브쿼리 WHERE절에 SELECT 문 사용 4) 연관 서브쿼리 서브쿼리 내에서 메인쿼리 내의 컬럼을 사용하는 것을 의미 SELECT EMPNO, ENAME FROM EMP A WHERE A.DEPTNO = (SELECT DEPTNO FROM DEPT B WHERE B.DEPTNO=A.DEPTNO)
1) IN 메인쿼리의 비교 조건이 서브쿼리의 결과 중 하나만 동일하면 참이 됨 SELECT ENAME, DNAME, SAL FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.EMPNO IN (SELECT EMPNO FROM EMP WHERE SAL >2000) /*급여(SAL)가 2000 이상인 사원번호를 조회*/ 2) ALL 메인쿼리와 서브쿼리의 결과가 모두 동일하면 참이 됨 SELECT * FROM EMP WHERE DEPTNO 2000); /*급여(SAL)가 2000 이상인 사원이 있으면 조회됨*/