SQLD 자격증 SQL 기본 및 활용 기출문제 / SQL시험 33회 시행

2020. 8. 17. 12:00SQL/SQLD - SQL 기본 및 활용

# SQL 여섯 번째 : 기출문제 오답 및 개념 정리

 

#2019년 6월 8일 시행 시험 개념 및 오답 정리 - SQL 기본 및 활용

 

1. SQL Sever에서 상위 N개의 데이터를 출력할 때

  TOP(N) 사용 이때 N에 해당하는 값이 동일한 경우

  동일 데이터를 함께 출력하는 WITH TIES 함수를 ORDER BY절과 함께 사용.

 

 

2. ANSI SQL

 

3. 계층형 SQL

1) CONNECT_BY_ISLEAF : 전개 과정에서 해당 데이터가 리프데이터면 1, 아니면 0을 반환

2) CONNECT_BY_ISCYCLE :

    전개 과정에서 자식을 갖는데 해당 데이터가 조상으로 존재하면 1, 그렇지 않으면 0을 반환

    여기서 조상이란 자신으로부터 루트까지의 경로에 존재하는 데이터를 말한다.

3) SYS_CONNECT_BY_PATH : 하위 레벨의 칼럼까지 모두 표시해준다.

 

4. 데이터베이스 시스템 언어의 종류

1) DDL(Data Definition Language) : CREATE, DROP, ALTER, RENAME

2) DML(Data Manipulation Language) : SELECT, INSERT, UPDATE, DELETE

3) DCL(Data Control Language) : GRANT, REVOKE

4) TCL(Transaction Control Language) : COMMIT, ROLLBACK

 

5. 제약조건(Constraints)

1) Primary Key : 주키로 테이블당 1개만 생성이 가능하다.

2) Foreign Key : 외래키로 테이블당 여러 개 생성이 가능하다.

3) NOT NULL : 명시적으로 NULL 입력을 방지한다.

4) UNIQUE : 테이블 내에서 중복된 값을 허용하진 않지만, NULL 값은 포함한다.

 *Primary Key = UNIQUE & NOT NULL 특징을 가진다.

 

 

6. 계층형 질의

1) START WITH절은 계층 구조의 시작점을 지정하는 구문이다.

2) ORDER SIBILINGS BY절은 형제 노드 사이에서 정렬을 지정하는 구문이다.

3) 순방향 전개란 부모 노드로부터 자식 노드 방향으로 전개하는 것을 말한다.

4) 루트 노드의 LEVEL 값은 1이다.

 

7. LEAD(대상속성, 순서, 디폴트값) OVER (PARTITION BY 절)

    데이터를 위로 당긴다고 생각하면 편함.

    LAG -> 데이터를 아래로 내린다고 생각하면 편함. 쓰는 방법은 동일

 

 

8. EXTRACT 

    특정 날짜/ 시간 값이나 날짜값을 가진 표현식으로 원하는 날짜 영역을 추출하여 출력하는 함수

   ex) SELECT EXTRACT(YEAR FROM DATE '1991-11-25') FROM TIME; -> 1991

   ex) SELECT EXTRACT(MONTH FROM TIME-STAMP '1991-11-25 23:53:20,2') FROM TIME -> 11

 

 

9. LPAD : 대상 문자, 지정 길이, 채울문자

     ex) SELECT LPAD('3', 6, '2') FROM TIME -> 222223

 

 

10. CUBE 함수

그룹 함수인 CUBE는 모든 조합 가능한 집계를 계산한다.

GROUP BY CUBE(DNAME, JOB)

=GROUP BY DNAME, JOB

UNION ALL

GROUP BY DNAME

UNION ALL

GUOUP BY JOB

UNION ALL

전체집계

 

11. 그룹함수( Group Function)

2-1 ROLLUP(컬럼1, 컬럼2);

 

ex) GROUP BY ROLLUP (부서별, 직업별) ;

 -> 그룹바이와 같이 사용하면 부서별 서브토탈(합계), 부서와 직업별 서브토탈(합계), 전체 합계가 모두 조회된다.

즉, ROLLUP으로 실행되는 칼럼 별로 Subtotal을 만들어준다.

컬럼의 순서가 바뀌면 결과도 바뀐다.

 

 ex) GROUP BY ROLLUP(부서번호) -> 부서별 전체 합계 계산

       

11-2 CUBE(컬럼1, 컬럼2);

 

 GROUP BY CUBE(부서별, 직업별) ;

-> 그룹바이와 같이 사용하면, CUBE 함수에 제시한 칼럼에 대해서 결합 가능한 모든 집계를 계산한다.

위와 같이 실행하면 부서별 합계, 직업별 합계, 부서별 직업별 합계, 전체 합계가 조회된다.

조합할 수 있는 경우의 수가 모두 조합된다.

 

11-3  GROUPING SET

 

GROUPING SETS (부서별, 직업별);

-> 부서별 합계와 직업별 합계가 개별적으로 조회된다.

즉, 서로 관계가 없이 결과값이 도출된다.

컬럼 순서 관계 없음.

전체 합계가 안나옴.

 

그룹 함수 중 ROLLUP, CUBE를 사용했을 때는 결과에서 전체 합계가 조회되어야 한다.

 

12.  NTILE 함수

- 파티션별로 전체 건수를 ARGUMENT 값으로 N 등분한 결과를 조회한다.

- 여분값이 있을 경우에는 앞에서 부터 순서대로 나눠서 하나씩 배분된다.

- ex) NTILE(5)는 5등분으로 분할하라는 의미로 위에서부터 높은 순으로 1~5등급으로 분할한다.

- 급여순위 102개의 컬럼을 등분할 경우 102/5 = 몫 20 나머지 2 다.  즉, 각 등급에 20개가 배분된다.

   이 경우 나머지 2개의 칼럼은 앞에서 부터 2개 등급에 하나씩 배분된다.

   결과

   1등급 : 21개 (1위~21위)

   2등급: 21개

   3등급: 20개

   4등급: 20개

   5등급: 20개