67. 저자 별 카테고리 별 매출액 집계하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/144856
정답 코드:
SELECT
A.AUTHOR_ID,
A.AUTHOR_NAME,
B.CATEGORY,
SUM(BS.SALES * B.PRICE) AS TOTAL_SALES
FROM BOOK B
INNER JOIN BOOK_SALES BS
ON B.BOOK_ID = BS.BOOK_ID
INNER JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE YEAR(BS.SALES_DATE) = 2022 AND MONTH(BS.SALES_DATE) = 1
GROUP BY A.AUTHOR_ID, B.CATEGORY
ORDER BY A.AUTHOR_ID ASC, CATEGORY DESC
문제 풀이때 했던 생각.
| # 2022년 1월의 도서 판매 데이터를 기준 # 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, # 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력 # 결과는 저자 ID 오름차순, 카테고리 내림차순 정렬 1) 2022년 1월의 도서 판매 데이터를 기준 WHERE YEAR(BS.SALES_DATE) = 2022 AND MONTH(BS.SALES_DATE) = 1 2)저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) SUM(BS.SALES * B.PRICE) AS TOTAL_SALES GROUP BY A.AUTHOR_ID, B.CATEGORY # AUTHOR_ID로 묶는 이유는 저자중 동명이인이 있을수 있기 때문 다음엔 WHERE 절로 풀어보기 |
69. 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/151139
정답 코드:
SELECT
MONTH(h.START_DATE) AS MONTH,
h.CAR_ID,
COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY h
WHERE h.START_DATE >= '2022-08-01'
AND h.START_DATE < '2022-11-01'
AND h.CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE >= '2022-08-01'
AND START_DATE < '2022-11-01'
GROUP BY CAR_ID
HAVING COUNT(*) >= 5
)
GROUP BY MONTH(h.START_DATE), h.CAR_ID
ORDER BY MONTH ASC, h.CAR_ID DESC;
문제 풀이때 했던 생각.
| # 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차 # 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외 # 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력 # 결과는 월을 기준으로 오름차순, 자동차 ID를 기준으로 내림차순 # ‘대상 자동차’만 뽑기 (기간 전체 기준 집계) SELECT CAR_ID, COUNT(*) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY h GROUP BY CAR_ID HAVING COUNT(*) >= 5 # 월별 + 자동차별 RECORDS 계산 SELECT CAR_ID, MONTH(START_DATE), COUNT(*) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE >= '2022-08-01' AND START_DATE < '2022-11-01' GROUP BY MONTH(START_DATE), CAR_ID 이번엔 WHERE 절 서브쿼리로 문제를 풀이했으나 다음엔 FROM절 서브쿼리로 문제 풀기 도전해보기 |
70. 그룹별 조건에 맞는 식당 목록 출력하기
문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131124
정답 코드:
SELECT
mp.MEMBER_NAME,
rr.REVIEW_TEXT,
DATE_FORMAT(rr.REVIEW_DATE, "%Y-%m-%d") AS REVIEW_DATE
FROM MEMBER_PROFILE mp
INNER JOIN REST_REVIEW rr
ON mp.MEMBER_ID = rr.MEMBER_ID
WHERE mp.MEMBER_ID = (
SELECT MEMBER_ID
FROM REST_REVIEW
GROUP BY MEMBER_ID
ORDER BY COUNT(*) DESC
LIMIT 1 )
ORDER BY rr.REVIEW_DATE ASC, rr.REVIEW_TEXT ASC
문제 풀이때 했던 생각.
| # 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회 # 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력 # 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 텍스트를 기준으로 오름차순 1) 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회 SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID ORDER BY COUNT(*) DESC LIMIT 1 |
WHERE절 서브쿼리
FROM 절 서브쿼리 문제 풀이 능력이 떨어지니 집중적으로 공부 다시하기
'E.코드카타 > Level 5' 카테고리의 다른 글
| 코드카타 Level.5 76 (0) | 2026.02.06 |
|---|---|
| 코드카타 Level.5 74, 75 (0) | 2026.02.05 |
| 코드카타 Level.5 71~73 (1) | 2026.01.22 |
