베지밀
[SQL] 프로그래머스 Selcect 4문제 본문

# 흉부외과 또는 일반외과 의사 목록 출력하기
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD,"%Y-%m-%d") AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME;
1. DATE_FORMAT
DATE_FORMAT(date, format)
date : 포맷할 날짜값
format : 날짜를 어떻게 포맷할지
# 과일로 만든 아이스크림 고르기
SELECT FLAVOR
FROM FIRST_HALF
WHERE TOTAL_ORDER >= 3000
AND FLAVOR IN (SELECT FLAVOR FROM ICECREAM_INFO WHERE INGREDIENT_TYPE = 'fruit_based')
ORDER BY TOTAL_ORDER DESC;
2. 서브쿼리
서브쿼리에는 ';'을 안써도 됨
# 3월에 태어난 여성 회원 목록 출력하기
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, "%Y-%m-%d")AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH) = '3'
AND GENDER = 'W'
AND TLNO IS NOT NULL
ORDER BY MEMBER_ID;
3. YEAR, MONTH, DAYOFMONTH 로 연/월/일 추출
YEAR, MONTH, DAYOFMONTH(date) => date에서 각각 연, 월, 일 추출
# 서울에 위치한 식당 목록 출력하기
SELECT REST_INFO.REST_ID, REST_INFO.REST_NAME, REST_INFO.FOOD_TYPE, REST_INFO.FAVORITES, REST_INFO.ADDRESS, ROUND(AVG(REST_REVIEW.REVIEW_SCORE),2) AS SCORE
FROM REST_INFO, REST_REVIEW
WHERE REST_INFO.REST_ID = REST_REVIEW.REST_ID
GROUP BY REST_INFO.REST_ID
HAVING REST_INFO.ADDRESS LIKE '서울%'
ORDER BY SCORE DESC, REST_INFO.FAVORITES DESC;
4. 반올림 ROUND 함수
ROUND(값, 반올림 기준)
ROUND(AVG(REST_REVIEW.REVIEW_SCORE),2) AS SCORE 는 2번째까지 반올림!
문제 : 소수점 3번째 자리에서 반올림하시오 = 2번째 자리까지 반올림하시오
5. 조인하는 방법
6. Group by / Having
조인할 때 조인 기준으로 group을 해주고 조건을 having으로 주어야 함