[프로그래머스] 3월에 태어난 여성 회원 목록 출력하기 - MySQL
2025. 2. 17. 14:27ㆍSQL 알고리즘
728x90
아래는 해당 SQL 코드에 대한 자세한 설명을 티스토리에 올릴 수 있도록 정리한 내용입니다:
3월에 태어난 여성 회원 목록 출력하기: SQL 쿼리 설명
문제 정의:
주어진 테이블 MEMBER_PROFILE에서 생일이 3월인 여성 회원들의 정보를 조회하는 SQL 쿼리를 작성하는 문제입니다. 이때 다음과 같은 조건이 있습니다:
- 전화번호(TLNO)가 NULL인 회원은 제외
- 결과는 MEMBER_ID를 기준으로 오름차순으로 정렬
- 날짜 형식은 YYYY-MM-DD 형식으로 출력
테이블 구조:
MEMBER_PROFILE 테이블은 다음과 같은 컬럼들로 구성됩니다:
- MEMBER_ID: 회원의 이메일 주소 또는 ID (VARCHAR)
- MEMBER_NAME: 회원의 이름 (VARCHAR)
- TLNO: 회원의 연락처 (VARCHAR)
- GENDER: 회원의 성별 (VARCHAR, 'M' 또는 'W')
- DATE_OF_BIRTH: 회원의 생년월일 (DATE)
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 TLNO IS NOT NULL
AND GENDER = 'W'
ORDER BY MEMBER_ID ASC;
- SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
- SELECT: 조회할 컬럼들을 선택합니다.
- MEMBER_ID, MEMBER_NAME, GENDER: 회원의 ID, 이름, 성별을 선택합니다.
- DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH: DATE_OF_BIRTH는 DATETIME 또는 DATE 형식일 수 있습니다. DATE_FORMAT() 함수는 날짜를 원하는 형식으로 변환하는 함수입니다. 여기서 %Y-%m-%d 형식은 YYYY-MM-DD 형태의 날짜를 출력합니다. 예를 들어, 1992-03-16처럼 날짜만 나오게 됩니다.
- FROM MEMBER_PROFILE
- FROM: 쿼리에서 사용할 테이블을 지정합니다. 여기서는 MEMBER_PROFILE 테이블을 사용합니다.
- WHERE MONTH(DATE_OF_BIRTH) = 3
- WHERE: 조건을 추가하여 데이터를 필터링합니다.
- MONTH(DATE_OF_BIRTH) = 3: MONTH() 함수는 날짜에서 월 정보를 추출합니다. DATE_OF_BIRTH의 월이 3월인 회원을 선택합니다.
- AND TLNO IS NOT NULL
- AND: 추가 조건을 연결합니다.
- TLNO IS NOT NULL: 전화번호(TLNO)가 NULL인 회원을 제외합니다. NULL인 경우는 연락처 정보가 없으므로 제외하는 조건입니다.
- AND GENDER = 'W'
- AND GENDER = 'W': 성별이 여성('W')인 회원만 선택합니다. 성별 정보는 GENDER 컬럼에 'M'(남성)과 'W'(여성) 값이 저장됩니다.
- ORDER BY MEMBER_ID ASC
- ORDER BY: 결과를 정렬하는 기준을 지정합니다.
- MEMBER_ID ASC: MEMBER_ID를 기준으로 오름차순(ASC)으로 정렬합니다. 이렇게 하면 회원 ID가 알파벳 순으로 정렬되어 출력됩니다.
쿼리의 실행 결과:
이 쿼리는 MEMBER_PROFILE 테이블에서 3월에 태어난 여성 회원의 MEMBER_ID, MEMBER_NAME, GENDER, 그리고 DATE_OF_BIRTH를 조회합니다. 전화번호가 없거나 성별이 여성인 회원만 필터링하고, 결과는 MEMBER_ID를 기준으로 오름차순으로 정렬됩니다.
예를 들어, 데이터가 다음과 같다면:
MEMBER_ID MEMBER_NAME GENDER DATE_OF_BIRTH
| jiho92@naver.com | 이지호 | W | 1992-02-12 |
| jiyoon22@hotmail.com | 김지윤 | W | 1992-02-22 |
| seoyeons@naver.com | 박서연 | W | 1993-03-16 |
| yoonsy94@gmail.com | 윤서연 | W | 1994-03-19 |
이 쿼리의 실행 결과는 다음과 같을 것입니다:
MEMBER_ID MEMBER_NAME GENDER DATE_OF_BIRTH
| seoyeons@naver.com | 박서연 | W | 1993-03-16 |
| yoonsy94@gmail.com | 윤서연 | W | 1994-03-19 |
핵심 포인트:
- MONTH(DATE_OF_BIRTH)는 DATE 또는 DATETIME 형식에서 월을 추출하는 함수입니다.
- DATE_FORMAT()은 날짜를 지정된 형식(예: YYYY-MM-DD)으로 변환하는 함수입니다.
- AND TLNO IS NOT NULL 조건은 전화번호가 있는 회원만 조회합니다.
- ORDER BY는 결과를 정렬하는 데 사용됩니다.
728x90
'SQL 알고리즘' 카테고리의 다른 글
| [프로그래머스] 조건에 맞는 아이템들의 가격의 총합 구하기 SQL (5) | 2025.02.19 |
|---|---|
| [프로그래머스] 최댓값 구하기 SQL (2) | 2025.02.19 |
| [프로그래머스] 가장 비싼 상품 구하기 SQL (1) | 2025.02.19 |
| [프로그래머스] SQL 문제 - 12세 이하인 여자 환자 목록 출력하기 (1) | 2025.02.17 |
| [SQL] ORDER BY로 데이터 정렬하기 – 내림차순 & 오름차순 정리 (0) | 2025.02.15 |