강의로 돌아가기
유니니

SUM(PRICE*SALES) 와 PRICE*SUM(SALES)차이가 뭘까요.?

WITH CTE1 AS (SELECT AUTHORID, CATEGORY, SUM(PRICE*SALES) AS TOTALSALES

==> 이부분에서 SUM(PRICE*SALES)를 하면 정답이고

WITH CTE1 AS (SELECT AUTHORID, CATEGORY, (PRICE*SUM(SALES)) AS TOTALSALES
==> PRICE * SUM(SALES)로 하면 오답인데, ( 일부는 실제로 값도 다름 )

이거 혹시 PRICE*SUM(SALES)로 정답 나오게하는 방법은 없을까요?

FROM BOOK
LEFT JOIN BOOKSALES
USING (BOOK
ID)
WHERE YEAR(SALESDATE) = 2022 AND MONTH(SALESDATE) = 01
GROUP BY 1, 2
ORDER BY 1 ASC, 2 DESC)
SELECT AUTHORID, AUTHORNAME, CATEGORY, TOTALSALES
FROM CTE1
JOIN AUTHOR
USING (AUTHOR
ID);

작성중인 코드―solution.sql
1
2
3
4
5
6
7
8
9
10
11
12
WITH CTE1 AS (SELECT AUTHOR_ID, CATEGORY, SUM(PRICE*SALES) AS TOTAL_SALES
FROM BOOK B
LEFT JOIN BOOK_SALES BS
USING (BOOK_ID)
WHERE YEAR(SALES_DATE) = 2022 AND MONTH(SALES_DATE) = 01
GROUP BY 1, 2
ORDER BY 1 ASC, 2 DESC)
SELECT AUTHOR_ID, AUTHOR_NAME, CATEGORY, TOTAL_SALES
FROM CTE1
JOIN AUTHOR
USING (AUTHOR_ID)
;
  • 유니니

    UTHOR_ID AUTHOR_NAME CATEGORY TOTAL_SALES 1 홍길동 인문 561000 1 홍길동 경제 1212000 2 김영호 소설 450000 3 김수진 생활 817000 3 김수진 기술 1661000

    유니니―2022.12.19 15:57
  • 유니니

    이렇게 떠서, 정답하고 홍길동-경제 / 김수진-기술 의 값이 다릅니다

    유니니―2022.12.19 15:58
1 개의 답변
장홍범

홍길동 / 경제 로 분류된 책이 1권이 아닙니다
PRICE * (sum(SALES)) 로 계산을 하려면 책마다 매출액을 계산한 후,
결과값을 요구조건(작가,카테고리)에 따라 재 합산 하면 될것 같습니다

select      A.AUTHOR_ID, A.AUTHOR_NAME, SUB.CATEGORY, sum(SUB.COSTS) as TOTAL_SALES
from AUTHOR A
inner join (
   select      B.AUTHOR_ID, B.CATEGORY, B.BOOK_ID, B.PRICE * sum(S.SALES) as COSTS
   from        BOOK B
   inner join  BOOK_SALES S on (B.BOOK_ID = S.BOOK_ID)
   where       year(S.SALES_DATE) = 2022 and month(S.SALES_DATE) = 1
   group by    B.AUTHOR_ID, B.CATEGORY, B.BOOK_ID
    )SUB on (A.AUTHOR_ID = SUB.AUTHOR_ID)
group by    A.AUTHOR_ID, A.AUTHOR_NAME, SUB.CATEGORY
order by    A.AUTHOR_ID asc, SUB.CATEGORY desc;

이걸로 정답이 나오긴 하네요

  • 유니니

    오 이해되었어요! 감사합니다. =) price*sum(sales))로 하면 쿼리가 너무 복잡해지네요 ㅠ-ㅠ 빠른 도움감사합니다!! =)

    유니니―2022.12.19 22:28
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.