Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?[처방]처방… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 6회
Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?

[처방]

처방번호약품코드투약량횟수일수
1M01232
2M01232
3M01134
4M02125
5M02215
6M03(null)23
SELECT DISTINCT 약품코드 || '(' || 일수 || '일)' AS 표기,
       투약량 * 횟수 + 일수 AS 값
  FROM 처방
 ORDER BY 표기, 값;
1
표기값
M01(2일)8
M01(4일)7
M02(5일)7
M03(3일)(null)
2
표기값
M01(2일)8
M01(4일)7
M02(5일)7
M03(3일)3
3
표기값
M01(2일)10
M01(4일)7
M02(5일)7
M03(3일)(null)
4
표기값
M01(2일)8
M01(4일)7
M02(5일)7
M02(5일)7
M03(3일)(null)
해설

DISTINCT 는 SELECT 결과 행 전체를 비교하므로 원본이 다른 처방 4·5도 표기와 값이 모두 M02(5일)·7 로 같아 한 행만 남는다.

값은 곱셈이 먼저 계산되어 M01(2일)은 2×3+2=8 이고, 투약량이 NULL 인 M03 은 결과가 NULL 이다.

  • NULL 이 섞인 산술은 0 으로 바뀌지 않고 NULL 이다.
  • 덧셈을 먼저 하면 10 이 나오지만 연산 우선순위와 맞지 않는다.
  • 계산 결과가 같은 M02 두 행은 DISTINCT 로 합쳐진다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 6회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기