💡문제 풀이/SQLD

[youtube] 제 49회 시험 문제 풀이

뇌 리셋은 기본이지 2024. 3. 5. 23:17

참고 동영상

 

문제풀이

⭐ 확장 GROUP BY(GROUPING_ID)

  • 2진수

  • 정답
㉠에 들어갈 답은 GROUPING_ID( C2, C1 ) 이다.

분석함수 ( PARTITION BY ~ )

  • C1은 LAST_VALUE를 통해 SAL의 맨 마지막 값을 출력.
  • JOB 기준으로 파티션 나눔.
  • WINDOWS 함수
  • UNBOUNDED는 첫번째 값을 지정하는 것이다.
    • WINDOWING는 시작점과 끝나는 점이 있어야 한다. 그렇기 때문에 ①번과 ②번은 무조건 틀렸다고 보면 된다.
  • ③번 풀이
    • 구문이 풀이하자면 첫번째 범위 부터 현재 범위이다.

⭐ ③번의 구문대로 실행하면 SMITH의 C1 값은 800이 나오고, ADAMS의 C1 값은 1100이 나온다.

  • ④번 풀이
    • 현재 행부터 해당 파티션의 끝까지라는 뜻이다.
    • CLERK 파티션의 SAL 컬럼 마지막 값은 1100이기 때문에 SMITH의 C1 값은 1100이 나온다.
  • 정답
㉠에 들어갈 답은 4번이다.

순위함수 ( RANK )

  • RANK
    • 1, 2, 2, 4, 5, 6 순서로 나온다. 
    • 동일한 값이면 중복 순위를 부여하고, 다음 순위는 해당 개수만큼 건너뛰고 반환
  • DENSE_RANK
    • 1, 2, 2, 3, 4, 5 순서로 나온다.
    • 동일한 값이면 중복 순위를 부여하고, 다음 순위는 중복 순위와 상관없이 순차적으로 반환
  • ROW_NUMBER
    • 중복 관계없이 순차적으로 순위를 반환
  • 정답
2번 DENSE_RANK이다.

분석함수

  • SAL의 평균값을 구한다.
  • 파티션은 없기 때문에 전체에 대한 평균을 구한다.
  • 단, 조건은 내가 읽은 로우 기준으로 한줄 위에부터 한줄 다음까지이다.

SMITH 기준 한 줄 다음인 ADAMS까지의 SAL을 읽는다.
FORD는 SCOTT과 본인 SAL의  평균 을 구하는 것

  • 정답
4번 3000이다.

NTILE(n)

ROW 건수 기준으로 최대한 n개 그룹으로 묶는 것

  #2일때  #3일때  #4일때

A    1      1      1
A    1      1      1
B    1      2      2
B    2      2      3
C    2      3      4

  • 서브쿼리에 있는 조건에 DEPTNO = 20인 점을 확인할 수 있다.

  • NTILE(2)의 뜻은 최대한 2개의 그룹으로 평등하게 나눈다는 뜻이다.

  • 정답
㉠ 3, ㉡ 2

계층쿼리

  • START WITH ENAME = ‘JONES’ ⇒ 첫 스타트 끊을 시작점
  • CONNECT BY MGR = PRIOR EMPNO; ⇒ 결과가 안나올 때 까지 재귀호출하는 것
  • 위의 코드를 해석하자면, 내가 읽은 MGR하고 내가 이전에 읽은 EMPNO같으면 CONNET 진행해라이다.

 

 

  • EMPNO와 MGR이 연결되면 CONNECT 한다.
  • 만약, CONNECT할 MGR이 없다면 거시서 STOP!
  • 근데! FORD는 EMPNO의 번호가 7566과 연결됨. JONES의 EMPNO을 가져와서 CONNECT를 진행 함

 

 

 

  • 정답
제일 높은 LEVEL을 출력하는 것이기 때문에 3번이 정답이다.

계층쿼리

  • CONNECT_BY_ISLEAF = 1 ⇒ 자식이 없으면 1을 주고, 자식이 없으면 0을 준다.

마치며

SQL은 역시 어렵다..😂 ORACLE이 함수가 많다는 소리는 들었지만 이렇게 다양한 함수가 있는 줄 몰랐다. SQLD 자격증 시험을 준비하면서 문제를 통해 다양한 쿼리문을 접해보았다. 공부한 내용을 통해 다른 사람이 만든 쿼리문을 읽을 수 있는 사람이 되면 좋겠다🙂!

'💡문제 풀이 > SQLD' 카테고리의 다른 글

[SQLD] 52회 SQLD(SQL 개발자) 합격 후기  (2) 2024.06.19
[SQLD] 45회 ~ 50회 기출문제  (1) 2024.03.11
[DB,SQLD] SQLD 시험 예비공부  (0) 2024.03.11