-
SQLD 자격검증실전문제 93번 문제<자격증>/[SQLD] 2023. 3. 21. 18:25728x90
93번. 아래와 같이 일자별매출 테이블이 존재할 때 아래 결과처럼 일자별 누적매출액을 SQL로 구하려고 한다. WINDOW FUNCTION을 사용하지 않고 일자별 누적매출액을 구하는 SQL로 옳은 것은?
[테이블: 일자별매출] [결과: 일자별 누적매출액]--1 SELECT A. 일자, SUM(A. 매출액) AS 누적매출액 FROM 일자별매출 A GROUP BY A. 일자 ORDER BY A.;
--2 SELECT B. 일자, SUM(B. 매출액) AS 누적매출액 FROM 일자별매출 A JOIN 일자별매출 B ON (A. 일자>= B. 일자) GROUP BY B. 일자 ORDER BY B.;
--3 SELECT A. 일자, SUM(B. 매출액) AS 누적매출액 FROM 일자별매출 A JOIN 일자별매출 B ON (A. 일자>= B. 일자) GROUP BY A.일자 ORDER BY A.일자;
--4 SELECT A.일자 ,(SELECT SUM(B.매출액) FROM 일자별매출 B WHERE B. 일자>= A. 일자) AS 누적매출액 FROM 일자별매출 A GROUP BY A.일자 ORDER BY A.일자;
[정답] 3번
[해설]
먼저 2번 쿼리를 살펴보겠습니다. B 테이블의 일자와 매출액 열을 선택하고, A 테이블의 일자와 B 테이블의 일자가 같거나 이전인 경우(즉, A.일자>= B.일자), B 테이블의 매출액을 누적하여 합계를 구합니다. 결과는 B.일자로 그룹화하고 B.일자로 정렬됩니다.
3번 쿼리는 2번 쿼리와 거의 동일하지만, A 테이블의 일자로 그룹화하고 A.일자로 정렬됩니다.
즉, 2번 쿼리는 각 날짜별 누적 매출액을 표시하고 3번 쿼리는 일자별 총 매출액을 표시합니다.
위의 2번과 3번 쿼리는 일자별 누적 매출액을 계산하는데, INNER JOIN을 사용하여 일자별매출 테이블을 조인하며 각각 B와 A테이블을 기준으로 그룹화하고 정렬합니다.
4번 쿼리는 서브쿼리를 사용하여 일자별 누적 매출액을 계산합니다.
먼저 A 테이블의 일자를 선택하고, A 일자 이상인 B 테이블의 매출액을 모두 더하여 누적 매출액 열로 표시합니다.
그런 다음, 일자별로 그룹화하고 일자 순서로 정렬합니다.
3번 쿼리와 비교하면, 4번 쿼리는 INNER JOIN 대신 서브쿼리를 사용하여 일자별 누적 매출액을 계산합니다. 이러한 방법은 INNER JOIN 대신 서브쿼리를 사용하는 것이 더 성능이 좋을 수 있습니다.
728x90[복습]
728x90'<자격증> > [SQLD]' 카테고리의 다른 글
SQLD 자격검증실전문제 92번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 94번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 95번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 96번 문제 (0) 2023.03.21 SQLD 자격검증실전문제 97번 문제 (0) 2023.03.21