<자격증>/[SQLD]

SQLD 자격검증실전문제 109번 문제

9566 2023. 3. 19. 20:53
728x90

 

109번. 아래 아래와 같이 설비와 에너지사용 테이블을 이용하여 결과를 나타내려할 때, SQL으로 가장 적절한 것을 2개 고르시오. 

 

보기.

1 
SELECT A. 설비ID. B. 에너지코드, SUM(B. 사용량) AS 사용량합계 
FROM 설비 A INNER JOIN 에너지사용량 B
ON (A. 설비ID= B. 설비[D)
GROUP BY CUBE ((A. 설비ID), (B. 에너지코드), (A. 설비ID. B. 에너지코드))
ORDER BY A. 설비ID, B. 에너지코드:
2
SELECT A. 설비ID, B. 에너지코드, SUM(B. 사용량) AS 사용량합계
FROM 설비 A INNER JOIN 에너지사용량 B
ON (A. 설비ID = B. 설비))
GROUP BY CUBE (A. 설비ID, B. 에너지코드)
ORDER BY A. 설비ID, B. 에너지코드;
3
SELECT A. 설비ID, B. 에너지코드, SUM(B. 사용량) AS 사용량합계
FROM 설비 A INNER JOIN 에너지사용량 B
ON (A. 설비ID B. 설비1D)
GROUP BY GROUPING SETS((A. 설비ID), (B. 에너지코드), (A. 설비ID, B. 에너지코드) (0)
4
ORDER BY A. 설비ID, B. 에너지코드:
SELECT A. 설비ID, B. 에너지코드, SUM(B. 사용량) AS 사용량합계
FROM 설비 A INNER JOIN 에너지사용량 B
ON (A. 설비ID= B. 설비ID)
GROUP BY GROUPING SETS((A. 설비ID), (B. 에너지코드), (A. 설비ID, B. 에너지코드))
ORDER BY A. 설비ID, B. 에너지코드:

정답

2, 3번

2번

위 SQL 코드는 "설비" 테이블과 "에너지사용" 테이블을 INNER JOIN 하여, 설비별 에너지 사용량의 합계를 구하는 쿼리입니다.

구체적으로 설명하면,

  1. 먼저 "설비" 테이블을 A라는 이름으로, "에너지사용" 테이블을 B라는 이름으로 INNER JOIN 합니다. 이때, A.설비ID와 B.설비ID를 조인 조건으로 사용합니다.
  2. 그 다음, A.설비ID와 B.에너지코드를 기준으로 GROUP BY를 수행합니다.
  3. GROUP BY CUBE 구문을 사용하여, A.설비ID와 B.에너지코드에 대해 모든 경우의 수를 구합니다. 즉, A.설비ID와 B.에너지코드 모두 NULL인 경우, 둘 중 하나만 NULL인 경우, 모두 NULL이 아닌 경우에 대한 결과를 모두 출력합니다.
  4. 각 경우의 수에 대해 SUM(B.사용량)으로 사용량의 합계를 구합니다.
  5. 결과를 A.설비ID, B.에너지코드 기준으로 오름차순으로 정렬합니다.

결과적으로, 설비ID와 에너지코드를 기준으로 사용량의 합계를 구하는데, 이를 CUBE를 이용하여 모든 경우의 수를 출력합니다.

 

3번

위 SQL 코드는 "설비" 테이블과 "에너지사용" 테이블을 INNER JOIN 하여, 설비별/에너지별/설비+에너지별/전체 사용량의 합계를 구하는 쿼리입니다.

구체적으로 설명하면,

  1. 먼저 "설비" 테이블을 A라는 이름으로, "에너지사용" 테이블을 B라는 이름으로 INNER JOIN 합니다. 이때, A.설비ID와 B.설비ID를 조인 조건으로 사용합니다.
  2. GROUPING SETS 구문을 사용하여, A.설비ID, B.에너지코드, A.설비ID+B.에너지코드, 전체 사용량에 대한 합계를 모두 출력합니다.
  3. SUM(B.사용량)으로 사용량의 합계를 구합니다.
  4. 결과를 A.설비ID, B.에너지코드 기준으로 그룹화합니다.
  5. GROUPING SETS에서 (0)을 사용하여, 전체 사용량에 대한 합계를 출력합니다.

결과적으로, 설비ID와 에너지코드를 기준으로 사용량의 합계를 구하는데, 이를 GROUPING SETS를 이용하여 각각의 경우에 대해 모두 출력합니다. 즉, 설비별, 에너지별, 설비+에너지별, 전체 사용량의 합계를 모두 출력합니다.

 

728x90

 

728x90