스터디/학습일지

[SQL] 20250619- mySQL 문제 풀이 미션 (1)

다다킴 2025. 6. 19. 14:18

[문제] 3월에 태어난 여성 회원 목록 출력하기  (20분 소요) 

MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID 기준으로 오름차순 정렬해주세요.
** DATE_OF_BIRTH의 데이트 포맷이 예시와 동일해야 정답처리 됩니다.
https://school.programmers.co.kr/learn/courses/30/lessons/131120

[문제 풀이] 

MEMBER_PROFILE 테이블은 아래와 같이 구성이 되어있었고, 여기서 아래 주황색으로 표기 된 내용이 출력 되어야 한다. 

Column name Type Nullable
MEMBER_ID
( 회원 ID/ 이메일로 되어있음)
VARCHAR(100) FALSE
MEMBER_NAME (이름) VARCHAR(50) FALSE
TLNO (전화번호) VARCHAR(50) TRUE
GENDER (성별 - M/W구분) VARCHAR(1) TRUE
DATE_OF_BIRTH (년-월-일 구분) DATE TRUE
SELECT MEMBER_ID, MEMBER_NAME, GENDER, Date_Format(DATE_OF_BIRTH,'%Y-%m-%d') as DATE_OF_BIRTH
FROM MEMBER_PROFILE

그리고 아래 주의사항에 DATE_OF_BIRTH의 데이트 포맷이 예시와 동일해야 하므로 DATE_OF_BIRTH 는 Date_format을 사용하였다. 

그리고 3월 여성회원의 생일이 포함 되어야 하고 전화번호 Null 값은 제외 하여야 한다. 그래서 where 함수를 걸고 Month는 3 , 성별은 'W' (여성) , 그리고 TLNO (전화번호)는 NULL 값을 제외하도록 사용하였다. 

WHERE MONTH (DATE_OF_BIRTH) Like '3' #3월 생일
and GENDER Like 'W' # 여성
and TLNO IS NOT NULL # 전화번호 Null 값 제외
ORDER BY MEMBER_ID ASC; # 회원아이디 기준 오름차순

나는 첫 문제를 풀다 'TLNO NOT NULL'로 썼다가 결과값이 오류 걸려 'IS'를 빼먹은 사실을 깨달았다. 빼먹은거 있는지 다시 확인 해봐야겠다 ... ㅠㅠ 그리고 가끔 ORDER BY 할 때마다 헷갈리는데.... 내림차순은 DESC, 오름차순은 ASC 이다. 

[정답] 

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) Like '3'
and GENDER Like 'W'
and TLNO IS NOT NULL 
ORDER BY MEMBER_ID ASC;