관리 메뉴

Rootable의 개발일기

프로그래머스 SQL 풀이 - 3월에 태어난 여성 회원 목록 출력하기 본문

프로그래머스 - SQL Kit

프로그래머스 SQL 풀이 - 3월에 태어난 여성 회원 목록 출력하기

dev-rootable 2023. 5. 19. 13:04

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

 

다음은 식당 리뷰 사이트의 회원 정보를 담은 MEMBER_PROFILE 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_IDMEMBER_NAMETLNOGENDERDATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.

 

Column name Type Nullable
MEMBER_ID VARCHAR(100) FALSE
MEMBER_NAME VARCHAR(50) FALSE
TLNO VARCHAR(50) TRUE
GENDER VARCHAR(1) TRUE
DATE_OF_BIRTH DATE TRUE

 

문제

MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID를 기준으로 오름차순 정렬해주세요.

 

출처 : 프로그래머스

 

주의 사항

DATE_OF_BIRTH의 데이트 포맷이 예시와 동일해야 정답처리 됩니다.

 

풀이

1. where 절에 필요한 조건들

 

 - gender = 'W'

 - TLNO(전화번호) 는 NULL 이면 안된다.

 - DATE_OF_BIRTH가 3월인 레코드

 

2. DATE 타입 데이터에서 년/월/일 추출

 

YEAR(컬럼명) = 년도

MONTH(컬럼명) = 월

DAYOFMONTH(컬럼명) = 일

 

Reference:

https://marketinga.tistory.com/13

 

[SQL] 날짜와 관련된 데이터추출(YEAR,MONTH,DAYOFMONTH)

날짜에 관한 데이터 추출을 알아보겠습니다. 1. 연도 추출 (YEAR) SELECT * FROM (데이터베이스/테이블) WHERE YEAR(컬럼명) = "2021" SELECT * FROM test.please2 WHERE YEAR(orderdate) = '2021' ㄴ test 데이터 베이스의 please

marketinga.tistory.com

 

3. 주의 사항에 보면 예시에 있는 DATE_OF_BIRTH 형식과 동일해야 한다고 한다.

 

DATE_FORMAT(date, format)

 - date : 포맷을 변경하고 싶은 값

 - format : 형식 (원하는대로 작성 가능)

 

select DATE_FORMAT('20230519', '%Y-%m-%d')
//결과 : 2023-05-19

 

여기서는 %Y(4자리 년도), %m(월), %d(일) 만 사용하면 된다.

 

  • 포맷 형태는 아래 사이트 참고

 

Reference:

https://ponyozzang.tistory.com/656

 

MySQL 날짜 변환 DATE_FORMAT 함수 사용 방법

DATE_FORMAT 함수를 사용하면 날짜를 지정한 포맷으로 변경할 수 있습니다. 날짜 포맷을 변경하는 이유는 SELECT로 데이터를 검색하는 경우 조건 대상이 date 타입의 컬럼이라면 날짜 포맷을 일치시켜

ponyozzang.tistory.com

 

정답 코드

SELECT member_id, member_name, gender, DATE_FORMAT(date_of_birth, '%Y-%m-%d')
FROM member_profile
WHERE gender = 'W' and MONTH(date_of_birth) = 3 and tlno IS NOT NULL
ORDER BY member_id