본문 바로가기
데이터베이스/MySQL

[MySQL] 프로그래머스스쿨 연습문제 Lv.2 모음1

by 상똥 2023. 4. 27.

1. 조건에 부합하는 중고거래 상태 조회하기

코딩테스트 연습 - 조건에 부합하는 중고거래 상태 조회하기 | 프로그래머스 스쿨 (programmers.co.kr)
풀이
1. 출력할 게시글 ID, 작성자 ID, 게시글 제목, 가격은 SELECT로 호출한다.
2. 거래 상태는 CASE-END를 사용해 각각 한글로 바꿔준다.
3. 조건에 맞는 날짜를 선택할 때에는 CREATED_DATE가 DATE타입이므로,  DATE_FORMAT을 사용한다.
4. 내림차순 정렬은 ORDER BY ~~~ DESC
회고
- DATE_FORMAT에서 맨 앞(연)은 대문자!!
코드 (접은 글)
더보기
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, 
    (CASE WHEN STATUS = 'SALE' THEN '판매중'
          WHEN STATUS = 'RESERVED' THEN '예약중'
          WHEN STATUS = 'DONE' THEN '거래완료'
     END) AS STATUS
FROM USED_GOODS_BOARD
WHERE DATE_FORMAT(CREATED_DATE,'%Y-%m-%d') = '2022-10-05'
ORDER BY BOARD_ID DESC

 

2. 자동차 평균 대여 기간 구하기

코딩테스트 연습 - 자동차 평균 대여 기간 구하기 | 프로그래머스 스쿨 (programmers.co.kr)
풀이
1. SELECT 문에 목록을 새로 생성해야 하므로 계산식 AS AVERAGE_DURATION
1-1. ROUND, AVG를 통해 평균일을 계산한 후 소수 둘째 자리에서 반올림
2. 자동차 목록이 필요한 것이므로 GROUP BY CAR_ID
3. HAVING으로 평균 기간 7일 이상으로 거름
4. 내림차순 정렬
회고
- ORDER 오타좀 내지 말자 ㅡㅡ
- ROUND = 반올림
- TRUNC = 반내림
코드 (접은 글)
더보기
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 AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC

 

3.  자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

코딩테스트 연습 - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 | 프로그래머스 스쿨 (programmers.co.kr)
풀이
1. SELECT에서 우선 모든 행을 세는 COUNT(*)를 사용한 후 AS CARS로 바꾼다.
2. OPTIONS의 타입이 VARCHAR이므로, '시트'가 포함된 행을 찾으려면 OPTIONS LIKE '%시트%'
2-1. ~~시트가 문장 사이에 있으므로 '시트'의 앞뒤에 %를 붙여주는 것이 확실한 답안
3. CAR_TYPE으로 묶어준다
4. CAR_TYPE을 기준으로 오름차순 정렬
회고
- 문장 안에서 찾는 건 : 열 이름 LIKE '%찾을 내용%'
코드 (접은 글)
더보기
SELECT CAR_TYPE, COUNT(*) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE

 

4. 조건에 맞는 도서와 저자 리스트 출력하기

코딩테스트 연습 - 조건에 맞는 도서와 저자 리스트 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)
풀이
 
회고
- 날짜 불러올때마다 DATE_FORMAT(열 이름, '%Y-%m-%d') 쓰는거 너무너무너무 귀찬하
코드 (접은 글)
더보기
SELECT BOOK_ID, AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d')
FROM BOOK, AUTHOR
WHERE BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID 
      and BOOK.CATEGORY = '경제'
ORDER BY PUBLISHED_DATE

 

5. 성분으로 구분한 아이스크림 총 주문량

코딩테스트 연습 - 성분으로 구분한 아이스크림 총 주문량 | 프로그래머스 스쿨 (programmers.co.kr)
풀이
1. SELECT에서 SUM을 사용해 TOTAL_ORDER을 모두 더한 값을 구하고 열 이름을 TOTAL_ORDER로 한다.
2. FROM에서 두 테이블 모두 불러온 후 두 테이블의 FLAVOR가 같은 곳을 구한다.
3. INGREDIENT_TYPE이 같은 것끼리 묶고 TOTAL_ORDER순으로 정렬한다.
회고
- SELECT에서 그대로 불러오는거 아니면 AS로 이름 설정해주는거 잊지말아요 ★
코드 (접은 글)
더보기
SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF, ICECREAM_INFO
WHERE FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR
GROUP BY INGREDIENT_TYPE
ORDER BY TOTAL_ORDER