베지밀

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

개인 공부/코딩테스트

[SQL] 프로그래머스 Selcect 4문제

vegimil 2024. 7. 23. 18:17

# 흉부외과 또는 일반외과 의사 목록 출력하기

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. 조인하는 방법

참고 : https://velog.io/@hyeh/%EB%91%90-%EA%B0%9C-%EC%9D%B4%EC%83%81%EC%9D%98-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%97%90%EC%84%9C-SQL-%EC%A7%88%EC%9D%98-JOIN

 

6. Group by / Having

조인할 때 조인 기준으로 group을 해주고 조건을 having으로 주어야 함