목록SQL (36)
으나님의 잡다한 개발상식
1) 집계 관련 윈도우 함수 - SUM : 파티션 별로 합계를 계산한다. - AVG : 파티션 별로 평균을 계산한다. - COUNT : 파티션 별로 행 수를 계산한다. - MAX/MIN : 파티션 별로 최댓값/최솟값을 계산한다. 2) SUM 함수 EX) 사원들의 급여와 같은 매너저를 두고 있는 사원들의 급여 합계 EX) 사원들의 급여와 같은 매너저를 두고 있는 사원들의 급여합을 누적값으로 출력 3) AVG 4) COUNT 5) MAX/MIN
1) 순위(RANK) 관련 윈도우 함수 - RANK : 특정 항목 및 파티션에 대해서 순위를 계산한다. 동일한 순위는 동일한 값이 부여된다. - DENSE_RANK : 동일한 순위를 하나의 건수로 계산한다. - ROW_NUMBER : 동일한 순위에 대해서 고유의 순위를 부여한다. 2) RANK 3) DENSE_RANK 4) ROW_NUMBER
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 이상인 사원이 있으면 조회됨*/