다음 SQL의 실행 결과로 옳은 것은?[처방]처방번호의사약품비1D150… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

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

[처방]

처방번호의사약품비
1D15000
2D12000
3D14000
4D23000
5D21000
6D36000
7D33500
8D3(null)
9D42500
SELECT 의사, COUNT(*) AS 건수, SUM(약품비) AS 합계
  FROM 처방
 WHERE 약품비 >= 3000
 GROUP BY 의사
HAVING COUNT(*) >= 2
 ORDER BY 의사;
1
의사건수합계
D1311000
D224000
D339500
2
의사건수합계
D129000
D213000
D329500
3
의사건수합계
D129000
D329500
4
의사건수합계
D139000
D339500
해설

WHERE 가 그룹화 전에 실행되어 약품비 3000 이상인 행만 남으므로 D1 은 5000·4000, D2 는 3000, D3 는 6000·3500 이 남고 D4 와 NULL 행은 빠진다.

그 뒤 HAVING 이 남은 행 기준 COUNT(*) 2 이상인 그룹만 고르므로 D1(2건, 9000)과 D3(2건, 9500)만 출력된다.

  • COUNT(*) 는 WHERE 에서 걸러진 행을 세지 않는다.
  • WHERE 를 무시하고 전체 행으로 집계한 결과가 아니다.
  • 건수 1인 D2 는 HAVING 에서 제외된다.

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

이어서 풀어보기

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