프로그래머스 | SQL 스터디 7

2024. 9. 3. 19:35·SQL/프로그래머스

SELECT

과일로 만든 아이스크림 고르기(Lv1)

문제 설명

​

문제

상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요.

​

풀이

SELECT로 FLAVOR을 선택

​

JOIN에서 FLAVOR로 두 테이블을 inner join

​

WHERE문에서 주 성분이 과일이고 총 주문량이 3000보다 크게 설정

​

ORDER BY에서 총 주문량을 내림차순 정렬

SELECT I.FLAVOR
FROM ICECREAM_INFO I
JOIN FIRST_HALF F ON F.FLAVOR = I.FLAVOR
WHERE INGREDIENT_TYPE = 'fruit_based' 
AND F.TOTAL_ORDER > 3000
ORDER BY F.TOTAL_ORDER DESC

SUM, MAX, MIN

조건에 맞는 아이템들의 가격의 총합 구하기(Lv2)

문제 설명

​

문제

ITEM_INFO 테이블에서 희귀도가 'LEGEND'인 아이템들의 가격의 총합을 구하는 SQL문을 작성해 주세요. 이때 컬럼명은 'TOTAL_PRICE'로 지정해 주세요.

​

풀이

SELECT에서 가격의 총합을 TOTAL_PRICE로 설정

​

WHERE에서 희귀도를 'LEGEND'로 설정

SELECT SUM(PRICE) TOTAL_PRICE
FROM ITEM_INFO
WHERE RARITY = 'LEGEND';

GROUP BY

카테고리 별 도서 판매량 집계하기(Lv3)

문제 설명

​

문제

2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 카테고리명을 기준으로 오름차순 정렬해주세요.

​

풀이

SELECT에서 카테고리, 판매량의 합계인 총 판매량을 조회

​

JOIN에서 BOOK_ID 칼럼을 기준으로 두 테이블을 INNER JOIN

​

WHERE에서 2022년 1월로 제한

​

GROUP BY에서 카테고리를 그룹화

​

ORDER BY에서 카테고리를 기준으로 오름차순 정렬

SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES 
FROM BOOK AS B
INNER JOIN BOOK_SALES AS S ON B.BOOK_ID = S.BOOK_ID
WHERE S.SALES_DATE LIKE '2022-01%'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY ASC;

IS NULL

업그레이드 할 수 없는 아이템 구하기(Lv3)

문제 설명

​

문제

더 이상 업그레이드할 수 없는 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬해 주세요.

​

풀이

더 이상 업그레이드 할 수 없는 아이템들은 ITEM_TREE 테이블의 PARENT_ITEM_ID에서 언급되지 않는 아이템들이다!

​

SELECT에서 ITEM_ID, ITEM_NAME, RARITY를 조회

​

JOIN에서 ITEM_ID를 기준으로 inner join

​

WHERE에서 서브쿼리로 PARENT_ITEM_ID를 뽑는데 T.PARENT_ITEM_ID IS NOT NULL을 설정

(NULL인 PARENT_ITEM_ID를 제외하기 위해서임)

해당 서브쿼리에 해당하지 않는 ITEM_ID로 설정!

​

ORDER BY에서 아이템 ID를 기준으로 내림차순 정렬

SELECT I.ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO I
JOIN ITEM_TREE T ON T.ITEM_ID = I.ITEM_ID
WHERE I.ITEM_ID NOT IN (
SELECT PARENT_ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NOT NULL
)
ORDER BY I.ITEM_ID DESC;

JOIN

있었는데요 없었습니다(Lv3)

문제 설명

​

문제

관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

​

풀이

SELECT에서 ANIMAL_ID, NAME을 조회

​

JOIN에서 ANIMAL_ID를 기준으로 두 테이블을 inner join

​

WHERE에서 보호 시작일보다 입양일이 더 빠르게 설정(→보호 시작일이 입양일보다 크다!)

​

ORDER BY에서 보호 시작일을 오름차순 정렬(보호 시작일이 빠른순)

SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME;

String, Date

대여기록이 존재하는 자동차 리스트 구하기(Lv3)

문제 설명

문제

CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬해주세요.

​

풀이

SELECT에서 CAR_ID에 DISTINCT로 중복이 없는 자동차ID를 조회

​

JOIN에서 CAR_ID를 기준으로 두 테이블을 inner join

​

WHERE에서 자동차 종류가 '세단'이면서 시작날짜가 22년 10월로 제한

​

ORDER BY에서 자동차 ID를 기준으로 내림차순 정렬

SELECT DISTINCT(C.CAR_ID) CAR_ID
FROM CAR_RENTAL_COMPANY_CAR C
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY R ON C.CAR_ID = R.CAR_ID
WHERE CAR_TYPE = '세단' 
	AND R.START_DATE LIKE '2022-10%'
ORDER BY C.CAR_ID DESC;

'SQL > 프로그래머스' 카테고리의 다른 글

프로그래머스 | SQL 스터디 9  (1) 2024.09.03
프로그래머스 | SQL 스터디 8  (0) 2024.09.03
프로그래머스 | SQL 스터디 6  (0) 2024.09.03
프로그래머스 | SQL 스터디 5  (1) 2024.09.03
프로그래머스 | SQL 스터디 4  (1) 2024.09.03
'SQL/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | SQL 스터디 9
  • 프로그래머스 | SQL 스터디 8
  • 프로그래머스 | SQL 스터디 6
  • 프로그래머스 | SQL 스터디 5
kimmalgu
kimmalgu
DA(데이터 분석가) 취준생 블로그
  • kimmalgu
    kimmalgu 님의 블로그
    kimmalgu
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 통계 (3)
      • [패캠] 데이터분석 부트캠프 (10)
        • 프로젝트 (2)
        • 수업 정리 (8)
      • 파이썬 (8)
        • 통계전산처리 (7)
      • SQL (27)
        • 프로그래머스 (20)
        • HackerRank (5)
        • LeetCode (1)
      • 코테 (0)
      • 독후감 (5)
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.0
kimmalgu
프로그래머스 | SQL 스터디 7
상단으로

티스토리툴바