본문 바로가기

반응형

DB

[SQLD] GROUPING SETS, ROLLUP, CUBE GROUPING SETS select job, deptno, sum(sal) from emp group by grouping sets(job,deptno); select deptno, mgr, sum(sal) from emp group by grouping sets(deptno, mgr) order by deptno asc; select deptno, mgr, sum(sal) from emp group by grouping sets(deptno, mgr, null); grouping sets 안에 null을 입력하면 deptno의 소계, mgr의 소계, 전체 합계가 나온다. null은 합계를 의미한다. ()도 합계를 의미한다. ROLLUP select mgr, deptno, sum(sal) from em.. 더보기
[SQLD] HAVING HAVING 1. GROUP BY로 묶인 각 그룹들 중에 실제 가져올 그룹들의 조건을 설정한다. 2. GROUP BY 뒤에 HAVING이 나온다. WHERE에 조건을 넣으면 GROUP BY가 풀려버림. SELECT DEPTNO, AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL)>2000; 3. 테이블 전체가 하나의 그룹인 경우 GROUP BY를 생략하고 HAVING 을 써도 된다. 4. HAVING 절에서 SELECT 에서 사용된 ALIAS를 사용할 수 없다. 연산순서가 HAVING이 더 빠르기 때문이다. SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO HAVING SUM(SAL)>8000 AND SUM(SAL) 더보기
[SQLD] 필수 암기 개념 (2) 필수 암기 윈도우함수 : rows, range 차이점 / rank, dense_rank 차이점 rank는 중복을 건너뛴다. 순위를 건너뛰지 않는다. partition by, order by - 윈도우 함수는 무조건 문제를 풀어보기 계층형 질의 : prior 자식데이터 = 부모데이터 , 부모에서 자식으로 가는 경우 순방향 (프자부 부자순) prior empno = mgr , 사원의 번호가 상관의 번호다. 데이터 모델화 : 관계형데이터베이스(RDBMS)를 공부하고 있다. 병원에서 환자를 관리한다. 환자가 엔터티다. 관리 대상이 엔터티임. 엔터티의 특징 : 해당 업무에 반드시 필요해야함, 속성이 반드시 존재, 두 개 이상의 인스턴스 집합, 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다. 엔터티의 분류 .. 더보기
[SQLD] 기출 필수 암기 개념 필수 암기! 쿼리문 작동 순서 : FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY DML, DDL, TCL, DCL이 무엇이고 각각 어떤 명령문이 있는가? DISTINCT는 집약 기능을 가지고 있다. DEPTNO를 기준으로 데이터를 뽑아옴. Alias 를 from 절에 쓸 수 있는가? 절대 xxxx concat 사용시 문자열을 합해서 출력한다. + 는 sql server, || 는 orcale and, or, not 의 연산순서는 NAO A between 1 and 2 , A in(1,4)를 풀어서 해석해보라. 1=< a 더보기
[SQLD] WINDOWING 절(ROWS & RANGE) WINDOWING 절 (ROWS & RANGE) WINDOWING 절을 사용하면 데이터 값의 처리 범위가 달라진다. 데이터 값 처리의 범위를 EX(직전 2행, 직후 1행)으로 설정한다. 파티션 내에서 분류가 가능해진다. CURRENT ROW (현재행)을 기준으로 앞에 있는 값을 PRECEDING , 이후의 값을 FOLLOWING이라 한다. UNBOWNDED PRECEDING 에서 UNBOWNDED FOLLOWING까지 연산이 이루어진다. 윈도우함수에서 WINDWOING 절을 생략한 경우, RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW가 기본값이다. ROWS를 기준으로 SUM(SAL)을 구하면 중복된 값없이 행별로 합이 이루어져서 누계가 나온다. 그러나 RANGE.. 더보기
[SQLD] 시험대비 쿼리문 연습 select * from emp where rownum=1500; SELECT ROUND(SAL*1.2) FROM EMP WHERE SAL 더보기
[SQLD] 서브 쿼리, 집합 연산자 서브쿼리(SUB QUERY) 1. from 절에 사용하는 서브쿼리를 인라인 뷰(Inline View)라고 한다. 2. 메인쿼리에서 서브쿼리의 결과 컬럼을 쓸 수 없다. 3. 서브쿼리는 메인쿼리의 컬럼을 모두 사용할 수 있다. 4. 아래 쿼리문은 다중행 오류가 난다. 서브쿼리문 안에서 group by deptno를 사용해서 부서번호별로 max(sal)이 3개 나온다. sal가 최대값 3개 보다 크다? 말이 안되는 식이다. 서브쿼리 결과가 단일행이 나와야 연산이 가능하다. select*from emp where sal>=(select max(sal) from emp group by deptno); 집합 연산자 1. UNION은 정렬기능을 포함한다. UNION ALL과 UNION의 연산순서를 비교하면 정렬기능.. 더보기
[SQLD] 기출 문제 개념정리(ASC, DESC, TRIM, SUBSTAR, LPAD, RAPD, JOIN, NATURAL JOIN) ASC, DESC ASC(오름차순), DESC(내림차순)는 앞에 쓰면 안 된다. 예시 SELECT 선수명, 팀명, 연봉 FROM PLAYER ORDER BY 선수명, 팀명 DESC 연봉 문자형 함수 1. TRIM(LEADING 'E' FROM 'EBACE') - 문자열 시작 부분(왼쪽)부터 E를 잘라낸다. 2. SUBSTAR, SUBSTRING : 오라클에 있는 함수는 SUBSTAR, SUBSTRING을 사용시 오류가 발생한다. 3. LPAD, RPAD - LPAD(원본 문자열, 패딩 할 길이, 패딩 문자) - SELECT LPAD(123, 8, 0) FROM DUAL; 결과는 00000123 JOIN 1. NATURAL JOIN 시, USING 조건절이 들어가면 안 된다. NATURAL은 내추럴해야 함.. 더보기

반응형