다음 ㉠과 ㉡의 결과 행 수를 순서대로 나열한 것은?[상영]상영번호관이… | [SQLD] SQL 개발자 기출유형 모의고사 9회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 9회
다음 ㉠과 ㉡의 결과 행 수를 순서대로 나열한 것은?

[상영]

상영번호관이름관객수
1A관40
2A관20
3B관35
4B관(null)
5C관50
6A관30
7B관60

㉠

SELECT 관이름,
       COUNT(*) OVER (PARTITION BY 관이름) AS 횟수
  FROM 상영
 WHERE 관객수 >= 30;

㉡

SELECT DISTINCT 관이름,
       COUNT(*) OVER (PARTITION BY 관이름) AS 횟수
  FROM 상영
 WHERE 관객수 >= 30;
1
5, 5
2
7, 3
3
5, 3
4
3, 3
해설

WHERE 가 먼저 관객수 30 이상인 1·3·5·6·7번 5행을 남기고, 윈도우 함수는 행을 줄이지 않으므로 ㉠은 5행이다.

㉡은 같은 관이름의 행이 같은 횟수 값을 가져 DISTINCT 로 A관 2·B관 2·C관 1 의 3행으로 줄어든다.

  • 7은 WHERE 이전의 전체 행 수로, NULL 과 20 인 행도 빠진다.
  • ㉡을 5행으로 본 것은 DISTINCT 가 중복 행을 합친다는 점을 놓친 것이다.
  • ㉠을 3행으로 본 것은 윈도우 함수를 GROUP BY 처럼 그룹당 1행으로 본 것이다.

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

이어서 풀어보기

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