
정답은 1번이다
SQL에서 NULL은 값이 아니라 '모름' 상태라서 =, !=, <> 같은 비교 연산자를 쓸 수 없음
그래서 NULL 비교는 전용 문법을 써야 함
🔴NULL 비교 = 무조건 IS 붙인다
NULL 찾기 = IS NULL
NULL 아닌 것 = IS NOT NULL

이 문제는 2015년 1월 전체를 찾는 SQL이 무엇인지 파악하고 결과가 다른 것을 찾으면 된다
즉, 2015년 1월 한달 또는 하루 한 순간 구분 문제 이다
모든 보기 공통 조건이
가입일시 = 2014-12-01 00시 라는 것이다
차이는 SVC_END_DATE 조건이다
1, 2, 3번은 2015년 1월 한달을 나타내지만
4번은 2015년01월1일0시만을 나타낸다
🍑 TO_DATE
문자열을 날짜 타입으로 바꿔주는 함수
🍑 TO_CHAR
날짜나 숫자를 문자열로 바꾸는 함수

이 문제는 줄바꿈 개수 세기 문제이다
표를 보면 TAB1에 행이 2개 있고 C1 값은 이렇게 생겼다
💠 1행 C1: A ↓ A → A가 2줄
💠 2행 C1: B ↓ B ↓ B → B가 3줄
(LENGTH(C1) - LENGTH(REPLACE(C1, CHR(10)))) + 1 AS CC
SQL 안쪽(서브쿼리)부터 보기
1. LENGTH(C1) : 전체 글자 수(줄바꿈도 1글자로 센다)
2. REPLACE(C1, CHR(10)) : 줄바꿈을 없애버린 문자열
3. LENGTH(줄바꿈 없앤 것) : 줄바꿈 제거 후 글자 수
4. 원래 길이 - 제거 후 길이 = 줄바꿈 개수
5. 줄 개수
CC = 해당 행의 줄 개
SELECT SUM(CC)
두 행의 줄 수를 합침
1행 CC = 2
2행 CC = 3
합계는 5

TO_DATE('2015.01.10 10', ...)를 보면 시작 시간 = 2015.01.10 10:00:00
뒤에 + 1/24/(60/10) 이게 얼마나 더하냐가 핵심
Oracle 날짜 더하기 공식
✅ Oracle에서 날짜에 숫자를 더하면 일(day) 기준
+1 = 1일(24시간) 추가
+ 1/24 = 1시간 추가
+ 1/24/60 = 1분 추기
+ 1/24/60/60 = 1초 추가
여기서는 얼마를 더하냐 계산
식 : 1/24/(60/10)
먼저 (60/10)부터 하면 6이 나온다
그래서 1/24/6
1/24 = 1시간이므로
1시간 /6을 하면 ➡️ 60분 나누기 6을 하니까 10분이다
10:00 + 10분 = 10:10
정답은 3번

먼저 공통 목표가
팀별로 FW 몇 명, MF 몇 명, DF 몇 명, GK 몇 명, 총 인원을 구하는 쿼리이다
①②③은 왜 같은 결과?
①(SQL Server) = ISNULL
②,③(Oracle) = NVL
👉 NULL을 0으로 바꾸는 함수만 다르고, 로직은 똑같다
SUM(CASE POSITION WHEN 'FW' THEN 1 ELSE 1 END)
④는 이렇게 되어있다
이걸 해석하면 FW면 1
FW 아니어도 1
결국 모든 선수에게 1을 주는 것이다

아래(ㄱ) = 서브쿼리 D가 뭘 뽑아줘야 하냐만 보면 된다
바깥 SQL부터 보고 D의 역할을 역으로 찾아보자
바깥 SQL에 이런 조건이 있다
▪️A.광고시작일자 = D.광고시작일자
▪️A.광고매체ID = D.광고매체ID
즉 D는 광고매체ID별 가장 빠른 광고시작일자를 갖고 있어야 하고
그래서 A에서 그 매체의 최초 게시 행만 골라낼 수 있다
즉, D가 반환해야 하는 컬럼은 광고매체 ID와 MIN(광고시작일자)이다
① 서브쿼리 안에서 C.광고매체ID를 쓰는데, D는 FROM 절의 인라인뷰(서브쿼리)라서 보통 바깥 테이블을 참조 못한다 ❌
③ GROUP BY 광고ID 라서 매체별이 아니라 광고별 최소가 된다 ❌ 문제 요구랑 다름
④ GROUP BY가 없어서 전체 데이터에서 최소 1건만 나온다 ❌
정답 3번

✅ 오류 나는 건 ④번 (집계함수 중첩 때문)
'🍏 개발일기 > 으쌰으쌰 SQLD 자격증 준비' 카테고리의 다른 글
| 노랭이 70P 부터 시작 56번, 60번, 62번 (0) | 2026.02.19 |
|---|---|
| 노랭이 40P 부터 시작 1번 ~ 20번 (0) | 2026.02.17 |
| 노랭이 126P 부터 시작 124번 ~ 127번 (0) | 2026.02.16 |
| 노랭이 123P 부터 시작 118번 ~ 123번 (0) | 2026.02.14 |
| 노랭이 104P 부터 시작 101번 ~ 110번 (0) | 2026.02.14 |