본문 바로가기
  • Coding & Book
프로그램및 언어/SQL

[SQL 코테] 3월에 태어난 여성 회원 목록 출력하기

by 루이3 2025. 4. 3.

문제 사이트

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제

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

MEMBER_PROFILE 테이블은 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.

 

풀이

1. 조건에 맞는 데이터 필터링

다음 조건을 WHERE절로 명시하여 필터링합니다.

  • 생일이 3월인 회원
  • 여성 회원 (성별 코드: "W")
  • 전화번호(TLNO)가 NULL이 아닌 회원
WHERE MONTH(DATE_OF_BIRTH) = 3
  AND GENDER = 'W'
  AND TLNO IS NOT NULL

여기서 중요한 점은 날짜에서 월을 추출할 때 MONTH() 함수를 사용한다는 것입니다.

  • MONTH(컬럼명): 날짜에서 월을 추출합니다.

2. 날짜 포맷 변경 생년월일은 'YYYY-MM-DD' 형식으로 출력해야 하므로 DATE_FORMAT() 함수를 사용합니다.

DATE_FORMAT(DATE_OF_BIRTH, "%Y-%m-%d") AS DATE_OF_BIRTH
  • %Y: 네 자리 연도 (예: 1993)
  • %m: 두 자리 월 (예: 03)
  • %d: 두 자리 일 (예: 16)

대소문자에 따라 출력 형식이 다르므로 주의가 필요합니다. (%Y: 네 자리 연도, %y: 두 자리 연도)

 

3. 결과 정렬 회원ID 기준으로 오름차순 정렬합니다.

ORDER BY MEMBER_ID ASC

 

최종 SQL 코드

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

 

출력 결과 예시