컴퓨터활용(컴활) 공부

[데이터베이스] 컴활실기 문제 풀어보자 (HAVING, GROUP BY)

미스털이 사용자 2024. 1. 16. 21:31
반응형

(문제 출처 : https://blog.naver.com/hellstudy/223302615932 )

 

​​​​​​​액세스 컴활 실기문제를 계속해서 풀어보자.

 

 

 

===

 

 

[만들기] -> [쿼리 디자인] 실행

 

 

 

유형을 바꿔야하므로

[디자인]->[업데이트] 선택

 

 

그리고 문제에서 요구하는 테이블을 불러온다.

 

그런데 위의 문제를 살펴보면

하위쿼리를 쓰고 In 연산자를 써야한다고 했다.

 

하위쿼리는 메인이 되는 쿼리에 Sub개념으로 들어가는 쿼리다.

 

INNER JOIN에 테이블을 변형시키면 하위쿼리, in을 모두 쓸 수 있게 된다.

 

UPDATE 
      재학생 
      INNER JOIN 
            (SELECT SUM(시수) as 시수합계, 학번 FROM 봉사내역 GROUP BY 학번) AS Z
            ON 
                  재학생.학번 = Z.학번 
SET 
      재학생.비고 = '우수 봉사 학생'
WHERE 
      Z.시수합계 >= 10;
 

 

그런데 위가 정답이 안되는 이유가 있다.

1) In 을 쓰지 않았다.

2) 실행이 안된다.

 

조건절에 GROUP BY , HAVING, SUM 하위쿼리를 써야겠다.

 

다음과 같이

HAVING(GROUP 시킬 데이터의 조건절)

GROUP BY (GROUP 기준)

SUM (GROUP기준으로 나뉜 데이터의 특정 열의 합계)

를 이용해 구문을 만든다.

UPDATE 
      재학생 
SET 
      재학생.비고 = '우수 봉사 학생'
WHERE 
      (재학생.학번) 
      In 
      (
            SELECT 
                  학번 
            FROM 
                  [봉사내역] 
            GROUP BY 
                  학번 
            HAVING 
                  SUM(시수) >= 10
      );
 

 

그리고 디자인을 보기를 하니 다음과 같이 됐다.

 

 

 

결과 확인

 

반응형