Step-by-Step

[프로그래머스] SQL 도장깨기 (Level 1) 본문

언어/MySQL

[프로그래머스] SQL 도장깨기 (Level 1)

희주(KHJ) 2023. 10. 6. 16:59

특정 옵션이 포함된 자동차 리스트 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/157343

SELECT * FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%네비게이션%' ORDER BY CAR_ID DESC;
  • Like 사용해서 특정 문자열 포함된 경우만 select

 

 

 

루시와 엘라 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/59046

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE 
FROM ANIMAL_INS 
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') 
ORDER BY ANIMAL_ID;
  • IN 연산자 사용해서 특정 값이 포함되어 있는지 확인

 

 

 

이름에 el이 들어가는 동물 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/59047

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE UPPER(NAME) LIKE '%EL%' AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME;
  • UPPER 사용해서 모두 UPPER CASE로 만든 후 EL이 들어가는지 확인

 

 

자동차 대여 기록에서 장기/단기 대여 구분하기 ★ ★ 

https://school.programmers.co.kr/learn/courses/30/lessons/151138

SELECT HISTORY_ID, CAR_ID, 
DATE_FORMAT(START_DATE, "%Y-%m-%d") AS START_DATE,
DATE_FORMAT(END_DATE, "%Y-%m-%d") AS END_DATE,
CASE
    WHEN DATEDIFF(END_DATE, START_DATE) < 29 THEN '단기 대여'
    ELSE '장기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) = "9"
ORDER BY HISTORY_ID DESC;
  • MONTH 추출을 위해 DATE_FORMAT으로 형식 맞추기
  • 년 %Y // 월 %m  // 일 %d
  • CASE로 DATEDIFF(끝나는 일 , 시작하는 일) < 29 (원래 실제 날짜 차이는 DATEDIFF() +1 <= 29인데 그냥 DATEDIFF() < 29 로 한거임)
  • MONTH 추출해서 9인 경우 뽑음

 

 

 

평균 일일 대여 요금 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/151136

SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';
  • ROUND(값, 소숫점자리) => 소숫점자리까지 반올림!!!!!
  • AVG(값) => 평균

 

 

 

 

조건에 맞는 도서 리스트 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/144853

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = "2021" AND CATEGORY = "인문";
  • YEAR 추출을 위해 DATE_FORMAT 맞추기

 

 

 

 

 

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

https://school.programmers.co.kr/learn/courses/30/lessons/133025

SELECT A.FLAVOR 
FROM FIRST_HALF AS A
LEFT JOIN ICECREAM_INFO AS B 
ON A.FLAVOR = B.FLAVOR
WHERE B.INGREDIENT_TYPE = 'fruit_based' AND A.TOTAL_ORDER > 3000
ORDER BY A.TOTAL_ORDER DESC;
  • LEFT JOIN 실행하고 첫 테이블 A 두번째 테이블 B로 선언
  • 맛을 기준으로 LEFT JOIN 
  • 문제 조건에 맞게 WHERE 절 만듦

 

 

인기 있는 아이스크림

https://school.programmers.co.kr/learn/courses/30/lessons/133024

SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC;
  • ORDER BY 여러개 사용하는 경우 나타냄
  • 우선순위대로 적어주면 된다.

'언어 > MySQL' 카테고리의 다른 글

[프로그래머스] SQL 도장깨기 (Level 2)  (0) 2023.04.26
Comments