31번
EXTRACT
0이 들어가면 0빼고 값을 가져옴
34번
단일행 서브쿼리
- 서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리
- 항상 비교연산자와 함께 사용된다.
- 비교연산자 뒤에는 단일행이 와야 하는데 뒤에 GROUP BY DEPT는 다중행 함수로 멀티행을 반환하여 에러가 발생함.
다중행 서브쿼리
- 서브쿼리의 실행 결과가 여러 건인 서브쿼리
- 메인 쿼리의 조건 절에 여러 칼럼을 동시에 비교할 수 있다.
- 서브쿼리와 메인쿼리의 칼럼 수와 칼럼 순서가 동일해야 한다.
ANY & ALL
IN
다수의 비교값과 비교하여 비교값 중 하나라도 같은 값이 있다면 true
조건절에서 사용
ANY
다중행 연산자. 조건을 만족하는 값이 하나라도 있다면 결과 리턴
다수의 비교값 중 한개라도 만족하면 true
IN 과 다른점은 비교 연산자를 사용
ALL
다중행 연산자. 모든조건을 만족하는 결과를 리턴
전체 값을 비교하여 모두 만족해야만 true
비교 연산자와 ANY
최소한 하나라도 만족하는 것
> ANY : 최소값 보다 크면
>= ANY : 최소값보다 크거나 같으면
< ANY : 최대값보다 작으면
<= ANY : 최대값보다 작거나 같으면
= ANY : IN과 같은 효과
!= ANY : NOT IN과 같은 효과
비교 연산자와 ALL
ANY와는 반대되는 개념입니다. 모든 조건에 만족 되는것
> ALL : 최대값 보다 크면
>= ALL : 최대값보다 크거나 같으면
< ALL : 최소값보다 작으면
<= ALL : 최소값보다 작거나 같으면
= ALL : SUBSELECT의 결과가 1건이면 상관없지만 여러 건이면 오류가 발생합니다.
!= ALL : 위와 마찬가지로 SUBSELECT의 결과가 여러 건이면 오류가 발생
37번
다중입력 쿼리문
Case문과 동일하게 수행되며 WHEN을 만족하면 종료한다.
그래서 T1행에는 2, 3 T2행에는 NULL, T3행에는 1이 입력된다
COL1
1 2 3
INSERT FIRST
WHEN COL1 >= 2 THEN INTO T1
WHEN COL1 >= 3 THEN INTO T2
ELSE INTO T3
SELECT*FROM SQLD_37;
38번
STRING_SPLIT
조회된 skills 컬럼의 쉼표(',') 구분자를 잘라서 해당 개수만큼 행으로 변환한다.
FROM절에서 해당 함수를 사용할 수 있다.
40번
ROLLUP & GROUPING SETS
GROUP BY GROUPING SETS (a, (a, b))
= GROUP BY a, ROLLUP(b)
GROUP BY GROUPING SETS ((a, b, c), (a, b), (b), ())
= GROUP BY ROLLUP (b, a, c)
○ 그룹 소계 함수 비교
- ROLLUP 은 단계별 합계
- CUBE 는 가능한 모든 조합별 합계
- GROUPING SETS 는 지정한 조합별 합계
- 괄호는 묶음 처리
○ 사용 예시
1.ROLLUP(a, b, c) <- 우측 항목을 하나씩 단계별로 제거
2.CUBE(a, b)
3.ROLLUP(a, (b, c), d) <- (b,c) 를 한 묶음으로 처리
- (a, (b, c), d)
- (a, (b, c))
- (a)
- ()
4.GROUPING SETS (a, (b, c))
45번
HASH JOIN
Equal Join(동등 조인)에서만 가능
대용량 처리에 유리
각 테이블에 INDEX가 반드시 필요한 것은 아니다.
데이터 건수가 적은 테이블을 선행 테이블로 두는 것이 유리하다
정렬 작업이 없어 정렬이 부담되는 대량배치작업에 유리
46번
ROLLUP & GROUPING SETS
ROLLUP(상품명) = GROUPING SETS(상품명),()
GROUP BY ROLLUP(상품명)
=GROUP BY GROUPING SETS(상품명),()
연관 링크
자료 출처
[SQLD] 35회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)
yurimac님 pdf 정리 자료
유투버 곰사원님 pdf 정리 자료
https://carami.tistory.com/18
https://m.cafe.naver.com/sqlpd/24282