수강(학번, 강좌코드, 점수) 테이블에 대해 다음 SQL 을 실행할 때… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 2회
수강(학번, 강좌코드, 점수) 테이블에 대해 다음 SQL 을 실행할 때 오류가 발생하는 것을 모두 고른 것은?
㉠ SELECT 강좌코드, AVG(점수) FROM 수강
   GROUP BY 강좌코드 HAVING AVG(점수) >= 80;
㉡ SELECT 강좌코드, COUNT(*) FROM 수강
   WHERE COUNT(*) >= 2 GROUP BY 강좌코드;
㉢ SELECT 강좌코드 FROM 수강 WHERE 점수 >= 60
   GROUP BY 강좌코드 HAVING COUNT(*) >= 2;
㉣ SELECT 학번, MAX(점수) FROM 수강
   GROUP BY 강좌코드;
1
㉡
2
㉡, ㉣
3
㉢, ㉣
4
㉠, ㉡
해설

WHERE 절은 그룹이 만들어지기 전에 행 단위로 처리되므로 집계 함수를 WHERE 에 쓸 수 없어 ㉡은 오류이며, 집계 조건은 HAVING 에 써야 한다.

㉣은 GROUP BY 에 없는 학번을 집계 없이 SELECT 해 그룹당 한 값을 정할 수 없으므로 오류가 난다.

  • ㉠은 집계 조건을 HAVING 에 둔 올바른 구문이다.
  • ㉢은 행 조건은 WHERE, 그룹 조건은 HAVING 에 둔 정상 구문이다.
  • ㉡만 고르면 GROUP BY 열 규칙을 어긴 ㉣을 놓친다.

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

이어서 풀어보기

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