프로그래머스 MySQL 레벨 1 문제 풀이
1) 평균 일일 대여 요금 구하기 (풀이 완료)
SELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = "SUV";
2) 조건에 맞는 도서 리스트 출력하기 (풀이 완료)
- 날짜 컬럼 출력 조건 확인하기 (DATE_FORMAT)
- 그냥 출력하면 시:분:초까지 같이 출력됨
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, "%Y-%m-%d")
FROM BOOK
WHERE (PUBLISHED_DATE LIKE "2021-%") AND (CATEGORY = "인문")
ORDER BY PUBLISHED_DATE ASC;
3) 과일로만든 아이스크림 고르기 (풀이 완료)
- (INNER/RIGHT/LEFT) JOIN 함수: ON + 칼럼명 (X) USING + 칼럼명 (O)
SELECT FLAVOR
FROM FIRST_HALF LEFT JOIN ICECREAM_INFO USING (FLAVOR)
WHERE TOTAL_ORDER > 3000 AND INGREDIENT_TYPE = "fruit_based"
ORDER BY TOTAL_ORDER DESC;
4) 인기 있는 아이스크림 (풀이 완료)
SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC;
5) 흉부외과 또는 일반외과 의사 목록 출력하기 (풀이 완료)
- 날짜 컬럼 출력 조건 확인하기 (DATE_FORMAT)
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, "%Y-%m-%d")
FROM DOCTOR
WHERE MCDP_CD IN ("CS", "GS")
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
6) 12세 이하인 여자 환자 목록 출력하기 (풀이 완료)
- SELECT 에 CASE 문 사용하면 열 이름이 바뀜
- AS 로 다시 설정해야 함
- 틀린 이유: 두번째 조건을 놓침
SELECT PT_NAME, PT_NO, GEND_CD, AGE, (CASE WHEN TLNO IS NULL THEN "NONE"
ELSE TLNO
END) AS "TLNO"
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = "W"
ORDER BY AGE DESC, PT_NAME ASC;
7) 가장 비싼 상품 구하기 (풀이 완료)
SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT;
8) 조건에 맞는 회원수 구하기 (풀이 완료)
SELECT COUNT(*)
FROM USER_INFO
WHERE (JOINED LIKE "2021%") AND (AGE BETWEEN 20 AND 29);
9) 나이 정보가 없는 회원 수 구하기 (풀이 완료)
SELECT COUNT(*) AS "USERS"
FROM USER_INFO
WHERE AGE IS NULL;
10) 경기도에 위치한 식품창고 목록 출력하기 (풀이 완료)
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, (CASE WHEN FREEZER_YN IS NULL THEN "N" ELSE FREEZER_YN END) AS "FREEZER_YN"
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE "경기도%"
ORDER BY WAREHOUSE_ID ASC;
'SQL' 카테고리의 다른 글
| [SQL 쿼리테스트] 6일차 (0) | 2025.08.22 |
|---|---|
| [SQL 쿼리테스트] 5일차 (2) | 2025.07.15 |
| [SQL 쿼리테스트] 4일차 (0) | 2025.06.09 |
| [SQL 쿼리테스트] 3일차 (0) | 2025.06.08 |
| [SQL 쿼리테스트] 1일차 (3) | 2025.06.05 |