🍏 개발일기/으쌰으쌰 SQLD 자격증 준비

노랭이 56P 부터 시작 36번 ~ 53번

보배 진 2026. 2. 18. 12:14

정답은 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번


 

✅ 오류 나는 건 ④번 (집계함수 중첩 때문)