(다 푼 후 사진 추가 예정)
너무 간단하거나 이전 문제 풀이와 비슷하다고 생각하는 문제는 작성하지 않았다.
판매 중인 도서 정보 테이블(BOOK)과 판매 정보 테이블(BOOK_SALES)이 주어진다.
2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리와 총 판매량을 구하여라.
결과는 카테고리의 오름차순으로 나타낸다.
select CATEGORY, sum(SALES) TOTAL_SALES
from BOOK natural join BOOK_SALES
where YEAR(SALES_DATE) = 2022 and MONTH(SALES_DATE) = 1
group by CATEGORY
order by CATEGORY
판매 중인 도서 정보 테이블(BOOK), 저자 정보 테이블(AUTHOR), 판매 정보 테이블(BOOK_SALES)이 주어진다.
2022년 1월의 저자 및 카테고리 별 매출액과 각 매출액의 저자 정보, 카테고리를 구하여라.
결과는 저자 ID의 오름차순, 카테고리의 내림차순으로 나타낸다.
나의 풀이
select AUTHOR_ID, AUTHOR_NAME, CATEGORY, sum(EACH_BOOK_SALES) as TOTAL_SALES
from (select BOOK_ID, CATEGORY, AUTHOR_ID, (PRICE * SALES) as EACH_BOOK_SALES
from (select BOOK_ID, SALES
from BOOK_SALES
where SALES_DATE like "2022-01%") A join BOOK B using(BOOK_ID)) A
join AUTHOR B using(AUTHOR_ID)
group by AUTHOR_ID, CATEGORY
order by AUTHOR_ID asc, CATEGORY desc
GPT의 풀이
SELECT A.AUTHOR_ID, A.AUTHOR_NAME, B.CATEGORY, SUM(S.SALES * B.PRICE) AS TOTAL_SALES
FROM BOOK_SALES S
JOIN BOOK B ON S.BOOK_ID = B.BOOK_ID
JOIN AUTHOR A ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE S.SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'
GROUP BY A.AUTHOR_ID, B.CATEGORY
ORDER BY A.AUTHOR_ID ASC, B.CATEGORY DESC;
식품 정보 테이블(FOOD_PRODUCT) 테이블이 주어진다.
이때 과자, 국, 김치, 식용유 각 식품분류 별로 가격이 가장 비싼 식품의 정보를 구하여라.
결과는 식품 가격의 내림차순으로 나타낸다.
select CATEGORY, PRICE MAX_PRICE, PRODUCT_NAME
from FOOD_PRODUCT
where (CATEGORY, PRICE) in (select CATEGORY, max(PRICE) MAX_PRICE
from FOOD_PRODUCT
where CATEGORY
in ("과자", "국", "김치", "식용유")
group by CATEGORY)
order by MAX_PRICE desc
자동차 대여 기록 정보(CAR_RENTAL_COMPANY_RENTAL_HISTORY) 테이블이 주어진다.
이때 2022년 10월 16일의 대여 여부를 나타내는 컬럼(AVAILABILITY)을 추가해 자동차 ID와 AVAILABILITY를 구하여라.
결과는 자동차 ID의 내림차순으로 나타낸다.
select distinct CAR_ID, ifnull(AVAILABILITY, "대여 가능")
from CAR_RENTAL_COMPANY_RENTAL_HISTORY A left join
(select distinct CAR_ID, "대여중" as AVAILABILITY
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where START_DATE <= '2022-10-16' and END_DATE >= '2022-10-16') B using(CAR_ID)
order by CAR_ID desc
자동차 대여 기록 정보(CAR_RENTAL_COMPANY_RENTAL_HISTORY) 테이블이 주어진다.
이때 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차에 대해 월 및 자동차 별 총 대여 횟수를 나타내는 컬럼(RECORDS)를 추가해 대여 월, 자동차 ID, RECORDS를 구하여라.
결과는 월의 오름차순, 자동차 ID의 내림차순으로 나타낸다.
select MONTH(START_DATE) as MONTH, CAR_ID, count(*) as RECORDS
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where (CAR_ID in (select CAR_ID
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where START_DATE between '2022-08-01' and '2022-10-31'
group by CAR_ID
having count(*) >= 5))
and (START_DATE between '2022-08-01' and '2022-10-31')
group by MONTH, CAR_ID
order by MONTH asc, CAR_ID desc
(추가 예정)