문제 사이트
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;
출력 결과 예시
'프로그램및 언어 > SQL' 카테고리의 다른 글
[SQL 코테] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2025.04.04 |
---|---|
[SQL 코테] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2025.04.02 |
[SQL 코테] 조건에 맞는 도서 리스트 출력하기 (0) | 2025.03.31 |
[SQL 코테] 12세 이하인 여자 환자 목록 출력하기 (0) | 2025.03.30 |
[SQL 코테] 평균 일일 대여 요금 구하기 (0) | 2025.03.27 |