새소식

Programmers Coding Test/MySQL

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

  • -

 

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

 

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

 

프로그래머스

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

programmers.co.kr

 

 

1)  문제

다음은 식당 리뷰 사이트의 회원 정보를 담은 MEMBER_PROFILE 테이블입니다.

MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.
MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 

이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원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
 

 

 

2)  예시

 

예를 들어 MEMBER_PROFILE 테이블이 다음과 같다면

 

MEMBER_ID MEMBER_NAME TLNO GENDER DATE_OF_BIRTH
jiho92@naver.com 이지호 01076432111 W 1992-02-12
jiyoon22@hotmail.com 김지윤 01032324117 W 1992-02-22
jihoon93@hanmail.net 김지훈 01023258688 M 1993-02-23
seoyeons@naver.com 박서연 01076482209 W 1993-03-16
yoonsy94@gmail.com 윤서연 NULL W 1994-03-19

 

 

SQL을 실행하면 다음과 같이 출력되어야 합니다.

 

 

 

MEMBER_ID MEMBER_NAME GENDER DATE_OF_BIRTH
seoyeons@naver.com 박서연 W 1993-03-16

 

 

 

 

3)  풀이

 

1. 테이블에서 멤버 아이디, 이름, 성별, 생년월일(YYYY-MM-DD)형식으로 조회합니다.

● SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') FROM MEMBER_PROFILE

 

 

※ DATE_FORMAT

MySQL에서 날짜를 원하는 형식으로 포맷팅하는 데 사용되는 함수

형식  설명 예시
%Y 네 자리 연도 2023
%y 두 자리 연도 23
%M 월 이름의 전체 문자열 January
%m 두 자리 월 01 ~ 12
%d 두 자리 일 01 ~ 31
%H 두 자리 24시간 형식 시 00 ~ 23
%h 두 자리 12시간 형식 시 01 ~ 12
%i 두 자리 분 00 ~ 59
%s 두 자리 초 00 ~ 59
%p AM 또는 PM AM 또는 PM

 

 

 

2. 생일이 3월인 사람을 조건으로 합니다.

● WHERE MONTH(DATE_OF_BIRTH) ='03'

 

※ MONTH(연월일)

연월일 중에 MONTH(월) 값만 추출합니다.

비슷한 개념으로, YEAR 또는 DAY를 입력하면 연, 일을 추출할 수 있습니다.

 

따라서 위에서 생년월일에서 월값만 추출해서 3월인 사람만 조건으로 해줍니다.

 

 

 

 

3. 성별이 여성인 사람을 조건으로 추가합니다.

●  AND GENDER = 'W'

 

 

 

 

4. 전화번호가 NULL인 사람은 조회하지 않습니다.

●  AND TLNO IS NOT NULL

전화번호가 NULL인 사람은 조회하지 않으니, NULL이 아닌 것(IS NOT NULL)을 조건으로 추가하면 됩니다.

 

※ IS NOT NULL

'NULL이 아니다'라는 표현으로, 반대 표현은 'IS NULL'입니다.

SQL에서는 TLNO = 'NULL' 또는 TLNO != 'NULL' 식으로 표현이 불가능합니다.

 

 

 

 

5. 멤버 아이디 오름차순으로 정렬합니다.

 ORDER BY MEMBER_ID ASC;

 

 

 

 

 

 

4)  코드

SELECT MEMBER_ID, MEMBER_NAME, GENDER, 
DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d') 
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH) ='03' AND GENDER = 'W' AND TLNO IS NOT NULL
ORDER BY MEMBER_ID ASC;

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.