자두의 데브로그

[MySQL] SQL 문제 풀이 - SELECT (1) 본문

코딩테스트/SQL

[MySQL] SQL 문제 풀이 - SELECT (1)

왕자두 2024. 7. 27. 23:27

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

-- 코드를 입력하세요
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 asc;

 

[새로 알게 된 점]

  • 날짜의 포맷을 지정하기 위해서는 DATE_FORMAT(날짜_관련_속성, 날짜_포맷) 함수를 사용한다.
  • 여러 속성을 통해 정렬하기 위해서는 먼저 작성한 속성을 우선으로 정렬하게 되고 내림차순인지, 오름차순인지는 ORDER BY 속성 내림/오름차순 을 통해 할 수 있다.

 

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

-- 코드를 입력하세요
SELECT f.FLAVOR FROM FIRST_HALF f JOIN ICECREAM_INFO i ON f.FLAVOR = i.FLAVOR WHERE i.INGREDIENT_TYPE = "fruit_based" and TOTAL_ORDER > 3000 ORDER BY TOTAL_ORDER desc;

 

 

3월에 태어난 여성 회원 목록 출력하기

-- 코드를 입력하세요
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, "%Y-%m-%d") as DATE_OF_BIRTH FROM MEMBER_PROFILE WHERE DATE_FORMAT(DATE_OF_BIRTH, "%m") = "03" and GENDER = "W" and TLNO is not null ORDER BY MEMBER_ID;

 

[새로 알게 된 점]

  • 월을 비교하기 위해서는 WHERE절에서 동일하게 DATE_FORMAT()함수를 사용하여 월을 비교한다.
  • ORDER BY는 default로 오름차순이다.

 

서울에 위치한 식당 목록 출력하기

-- 코드를 입력하세요
SELECT i.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(REVIEW_SCORE), 2) as SCORE FROM REST_INFO i JOIN REST_REVIEW r ON i.REST_ID = r.REST_ID WHERE ADDRESS LIKE "서울%" GROUP BY i.REST_ID ORDER BY SCORE desc, FAVORITES desc;

 

[새로 알게 된 점]

  • 문자열에 특정 값이 포함되는지 확인하기 위해서는 "%" 를 사용하면 되는데 이 문제에서는 서울에 위치한 식당을 골라내는 문제라 서울 뒤에 바로 %를 붙여서 골라내야했다. ("서울특별시" 로 골라내면 "서울시"로 입력된 데이터를 골라내지 못함)
  • 처음 문제를 풀었을 때 그냥 AVG를 사용했는데 같은 REST_ID에 대해서는 묶어서 평균 점수를 출력해야되기 때문에 GROUP BY를 통해 REST_ID를 기준으로 묶는 방식으로 문제를 해결해야 정답이었다.