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

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

SELECT

강원도에 위치한 생산공장 목록 출력하기(Lv1)

문제 설명

​

문제

FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.

​

풀이

SELECT로 공장 ID, 공장 이름, 주소를 조회

​

WHERE에서 강원도를 지정하기 위해 LIKE문을 활용

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%';
 

SUM, MAX, MIN

잡은 물고기 중 가장 큰 물고기의 길이 구하기(Lv1)

문제 설명

​

문제

FISH_INFO 테이블에서 잡은 물고기 중 가장 큰 물고기의 길이를 'cm' 를 붙여 출력하는 SQL 문을 작성해주세요.

이 때 컬럼명은 'MAX_LENGTH' 로 지정해주세요.

​

풀이

SELECT에서 CONCAT을 활용하여 최대 길이에 'cm'를 붙여서 출력

해당 칼럼을 'MAX_LENGTH'로 지정

SELECT CONCAT(MAX(LENGTH), 'cm') AS 'MAX_LENGTH'
FROM FISH_INFO;

GROUP BY

자동차 대여 기록에서 대여중/대여 가능 여부 구분하기(Lv4)

문제 설명

​

문제

FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.

​

풀이

WITH에서 catergroy별 최대 가격을 조회하는 구문을 만들어둠

( 여기서 중요한점은 WHERE fp2.CATEGORY = fp1.CATEGORY 조건을 사용하여

fp1의 각 카테고리에 대해 최대 가격을 구함)

​

SELECT에서 CATEGORY, PRICE, PRODUCT_NAME를 조회

​

WHERE에서 '과자', '국', '김치', '식용유'만 조회하게 설정

​

ORDER BY에서 가격을 기준으로 내림차순 정렬

WITH MAX_PRICE AS (
    SELECT CATEGORY, PRICE, PRODUCT_NAME
    FROM FOOD_PRODUCT fp1
    WHERE PRICE = (
        SELECT MAX(fp2.PRICE)
        FROM FOOD_PRODUCT fp2
        WHERE fp2.CATEGORY = fp1.CATEGORY
    )
)

SELECT CATEGORY, PRICE, PRODUCT_NAME
FROM MAX_PRICE
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
ORDER BY PRICE DESC;

JOIN

상품별 오프라인 매출 구하기 (Lv2)

문제 설명

​

문제

PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.

​

풀이

SELECT에서 상품코드와 가격*판매량의 합계인 매출을 조회

​

JOIN에서 PRODUCT_ID를 기준으로 두 개의 테이블을 join

​

GROUP BY 에서 상품코드별로 그룹화

​

ORDER BY에서 매출액순 내림차순, 상품코드별 오름차순 정렬

SELECT P.PRODUCT_CODE , P.PRICE * SUM(OS.SALES_AMOUNT) SALES 
FROM PRODUCT P
JOIN OFFLINE_SALE OS ON OS.PRODUCT_ID = P.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, P.PRODUCT_CODE ASC;

String, Date

자동차 평균 대여 기간 구하기(Lv2)

문제 설명

​

문제

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.

​

풀이

SELECT에서 CAR_ID와 평균대여기간을 조회

DATEDIFF함수의 경우 두 날짜의 차이를 계산함

ex) 04-01과 04-01을 DATEDIFF 함수에 넣으면 0이 나옴. 즉 하루를 빼주므로 +1을 해주어야 알맞은 값을 구함!

​

GROUP BY에서 CAR_ID로 그룹화

​

ORDER BY에서 평균대여기간으로 내림차순, CAR_ID로 내림차순 정렬

SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE,START_DATE)+1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING ROUND(AVG(DATEDIFF(END_DATE,START_DATE)+1), 1) >=7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;

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

프로그래머스 | SQL 스터디 10  (2) 2024.09.10
프로그래머스 | JOIN - 없어진 기록 찾기 (+JOIN정리)  (1) 2024.09.10
프로그래머스 | SQL 스터디 8  (0) 2024.09.03
프로그래머스 | SQL 스터디 7  (0) 2024.09.03
프로그래머스 | SQL 스터디 6  (0) 2024.09.03
'SQL/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | SQL 스터디 10
  • 프로그래머스 | JOIN - 없어진 기록 찾기 (+JOIN정리)
  • 프로그래머스 | SQL 스터디 8
  • 프로그래머스 | SQL 스터디 7
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 스터디 9
상단으로

티스토리툴바