이런 문제가 있다
테이블이 총 3개가 있다
이 3개를 묶어줘야 한다
JOIN을 사용해 보자
FROM BOOK AS B
INNER JOIN AUTHOR AS A
그다음에
ON B.AUTHOR_ID = A.AUTHOR_ID
ON을 사용하여 묶을 수 있다
더 쉽게 할 수는 없을까?
그래서 찾아봤다
USING
두 개의 테이블이 내부 조인으로 조인 될 때 조인하고자 하는 두 테이블의 컬럼명이 같을 경우 조인 조건을 길게 적지 않고 간단하게 적을 수 있도록 하는 역할
이런 게 있었네?
당장 사용해 보자
FROM BOOK AS B
INNER JOIN AUTHOR AS A
USING (AUTHOR_ID)
그동안은 ON만 사용했는데
앞으로 잘 써먹을 것 같다
그다음 테이블도 묶어보자
FROM BOOK AS B
INNER JOIN AUTHOR AS A
USING (AUTHOR_ID)
INNER JOIN BOOK_SALES AS S
USING (BOOK_ID)
이번에는 BOOK_ID 칼럼명이 같으므로
USING(BOOK_ID)를 써주었다
저자ID, 저자명, 카테고리, 매출액 리스트를 구해야 한다
SELECT B.AUTHOR_ID,
A.AUTHOR_NAME,
B.CATEGORY,
SUM(S.SALES * B.PRICE) AS TOTAL_SALES
매출액은 판매량 * 판매가를 구하는 거라서 SUM 함수를 사용했다
그리고 2022년 1월의 도서 판매 데이터를 구해야 하니
SELECT B.AUTHOR_ID,
A.AUTHOR_NAME,
B.CATEGORY,
SUM(S.SALES * B.PRICE) AS TOTAL_SALES
FROM BOOK AS B
INNER JOIN AUTHOR AS A
USING (AUTHOR_ID)
INNER JOIN BOOK_SALES AS S
USING (BOOK_ID)
WHERE S.SALES_DATE LIKE '2022-01%'
2022년 1월에 해당하는 것 만 찾아낸다
이제 저자ID와 카테고리를 그룹화하여
SELECT B.AUTHOR_ID,
A.AUTHOR_NAME,
B.CATEGORY,
SUM(S.SALES * B.PRICE) AS TOTAL_SALES
FROM BOOK AS B
INNER JOIN AUTHOR AS A
USING (AUTHOR_ID)
INNER JOIN BOOK_SALES AS S
USING (BOOK_ID)
WHERE S.SALES_DATE LIKE '2022-01%'
GROUP BY B.AUTHOR_ID, B.CATEGORY
저자ID 오름차순, ID가 같다면 카테고리 내림차순으로 정렬해 준다
SELECT B.AUTHOR_ID,
A.AUTHOR_NAME,
B.CATEGORY,
SUM(S.SALES * B.PRICE) AS TOTAL_SALES
FROM BOOK AS B
INNER JOIN AUTHOR AS A
USING (AUTHOR_ID)
INNER JOIN BOOK_SALES AS S
USING (BOOK_ID)
WHERE S.SALES_DATE LIKE '2022-01%'
GROUP BY B.AUTHOR_ID, B.CATEGORY
ORDER BY B.AUTHOR_ID ASC, B.CATEGORY DESC
점점 SQL을 깨닫기 시작한다
아직은 어렵지만 점점 더 발전하고 있는 것 같다
주말에 현업에서 뛰고 있는 친구에게 SQL 좀 가르쳐 달라고 했다
좀 더 발전하는 시간이 됐으면 좋겠다
오늘의 느낀점
공든 탑이 무너지랴 하지만 방심은 금물
'코딩 나도 할 수 있다!!' 카테고리의 다른 글
2024.03.27 (수) SQL 같은답 다른풀이 (0) | 2024.03.27 |
---|---|
2024.03.25 (월) SQL SET (0) | 2024.03.25 |
2024.03.20 (수) SQL ROUND 함수 (1) | 2024.03.20 |
2024.03.19 (화) SQL CONCAT, CONCAT_WS 함수 (feat.SUBSTRING) (1) | 2024.03.19 |
2024.03.18 (월) SQL JOIN 함수와 DATEDIFF 함수 (1) | 2024.03.18 |