본문 바로가기

코딩 나도 할 수 있다!!

2024.03.21 (목) SQL USING

 

이런 문제가 있다

테이블이 총 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 좀 가르쳐 달라고 했다

좀 더 발전하는 시간이 됐으면 좋겠다


오늘의 느낀점

공든 탑이 무너지랴 하지만 방심은 금물