1. 문제목적
특히 조건문(WHERE)과 날짜 처리 함수(MONTH), 결과 정렬(ORDER BY)을 활용하는 방법을 익히는 데 목적이 있다.
- WHERE 절을 통한 조건 필터링
- MONTH 함수를 사용한 특정 달의 데이터 추출
- ORDER BY 절을 사용한 정렬
- DATE_FORMAT을 활용한 날짜 데이터 출력 형식 변환
- NULL 값 필터링
2. 핵심개념
WHERE 절
- 특정 조건에 맞는 데이터를 필터링하는 데 사용된다.
- 예: WHERE GENDER = 'W'는 성별이 여성인 데이터를 필터링한다.
MONTH() 함수
- 날짜 데이터에서 월(month)을 추출하는 데 사용된다.
- 사용법: MONTH(컬럼명)
- 예: MONTH(DATE_OF_BIRTH) = 3는 3월에 태어난 데이터를 필터링한다.
DATE_FORMAT() 함수
- 날짜를 지정된 형식으로 변환해 출력한다.
- 사용법: DATE_FORMAT(컬럼명, '형식')
- 예: DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d')는 날짜를 YYYY-MM-DD 형식으로 변환한다.
ORDER BY 절
- 데이터를 정렬하는 데 사용된다.
- 예: ORDER BY MEMBER_ID ASC는 회원 ID를 기준으로 오름차순 정렬한다.
NULL 값 처리 (IS NOT NULL)
- 특정 컬럼의 값이 NULL인 데이터를 제외할 때 사용된다.
- 예: TLNO IS NOT NULL은 전화번호가 NULL이 아닌 데이터를 필터링한다.
3. 문제해결절차
- 문제 이해
- GENDER가 W(여성)이고 MONTH(DATE_OF_BIRTH)가 3(3월)인 회원만 조회.
- TLNO가 NULL이 아닌 데이터만 포함.
- MEMBER_ID 기준으로 오름차순 정렬.
- 접근 방법
- WHERE 조건을 사용해 필터링:생일이 3월(MONTH(DATE_OF_BIRTH) = 3).
- 전화번호가 NULL이 아님(TLNO IS NOT NULL).
- 성별이 여성(GENDER = 'W').
- ORDER BY로 정렬:
- MEMBER_ID 기준 오름차순(ASC).
- DATE_FORMAT으로 날짜 출력 형식 지정.
- SQL 작성 및 테스트
- 필터 조건과 정렬 조건을 작성.
- 쿼리를 실행해 결과를 확인하고 수정.
4. 코드작성
-- 3월에 태어난 여성 회원 목록을 출력하는 SQL
SELECT
MEMBER_ID, -- 회원 ID
MEMBER_NAME, -- 회원 이름
GENDER, -- 성별
DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH -- 생년월일을 'YYYY-MM-DD' 형식으로 변환
FROM
MEMBER_PROFILE -- 데이터 조회 테이블
WHERE
GENDER = 'W' -- 여성 회원만 조회
AND MONTH(DATE_OF_BIRTH) = 3 -- 생일이 3월인 회원만 조회
AND TLNO IS NOT NULL -- 전화번호가 NULL이 아닌 데이터만 포함
ORDER BY
MEMBER_ID ASC; -- 회원 ID 기준 오름차순 정렬
5. 코드분석
- SELECT 절
- MEMBER_ID, MEMBER_NAME, GENDER, DATE_OF_BIRTH를 선택.
- DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d')를 통해 날짜를 YYYY-MM-DD 형식으로 출력.
- FROM 절
- 데이터는 MEMBER_PROFILE 테이블에서 가져온다.
- WHERE 절
- GENDER = 'W': 성별이 W(여성)인 데이터 필터링.
- MONTH(DATE_OF_BIRTH) = 3: 생일이 3월인 데이터만 선택.
- TLNO IS NOT NULL: 전화번호가 NULL이 아닌 데이터만 포함.
- ORDER BY 절
- 결과를 MEMBER_ID 기준으로 오름차순(ASC) 정렬.
- DATE_FORMAT 함수
- DATE_OF_BIRTH를 읽기 쉬운 형식으로 변환.
'SQL Kit > SELECT' 카테고리의 다른 글
업그레이드 된 아이템 구하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.04 |
---|---|
재구매가 일어난 상품과 회원 리스트 구하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.04 |
특정 형질을 가지는 대장균 찾기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |
가장 큰 물고기 10마리 구하기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |
잔챙이 잡은 수 구하기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |