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 (BOOKID)
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 (AUTHORID);
UTHOR_ID AUTHOR_NAME CATEGORY TOTAL_SALES 1 홍길동 인문 561000 1 홍길동 경제 1212000 2 김영호 소설 450000 3 김수진 생활 817000 3 김수진 기술 1661000
이렇게 떠서, 정답하고 홍길동-경제 / 김수진-기술 의 값이 다릅니다
홍길동 / 경제 로 분류된 책이 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))로 하면 쿼리가 너무 복잡해지네요 ㅠ-ㅠ 빠른 도움감사합니다!! =)