Study/SQL

[MySQL/ORACLE] 프로그래머스 - 3월에 태어난 여성 회원 목록 출력하기

truthyun 2023. 6. 16. 00:01
728x90
반응형
 

프로그래머스

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

programmers.co.kr

 

문제 설명

다음은 식당 리뷰 사이트의 회원 정보를 담은 MEMBER_PROFILE 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_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. 생일이 3월이다

2. 회원의 성별을 여성이다

3. 전화번호가 NULL인 경우는 제외한다.

또한 DATE_OF_BIRTH의 데이트 포맷이 "1993-03-16"와 같아야 한다는 점을 유의해서 아래와 같이 SQL문을 작성할 수 있다.

 

MySQL 정답 예시

더보기

MySQL의 경우 Oracle과 날짜입력형식이 조금 다르다. DATE_FORMAT을 사용해 Oracle의 TO_CHAR과 같은 기능을 한다. 또한 날짜 입력 포맷이 다르기 때문에 다음 날짜 포맷을 참고하면 쉽게 검색할 수 있다.

 

 

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 
      TLNO IS NOT NULL AND GENDER = 'W'
ORDER BY MEMBER_ID;

 

Oracle 정답 예시

더보기

Oracle의 경우 TO_CHAR()를 이용해서 날짜형 데이터를 문자형으로 데이터 유형을 변환할 수 있다.

SELECT MEMBER_ID, MEMBER_NAME, GENDER, 
       TO_CHAR(DATE_OF_BIRTH, 'YYYY-MM-DD') AS DATE_OF_BIRTH 
FROM MEMBER_PROFILE
WHERE TO_CHAR(DATE_OF_BIRTH,'MM') = '03' AND 
      TLNO IS NOT NULL AND GENDER = 'W'
ORDER BY MEMBER_ID;

 

 

728x90
반응형