본문 바로가기
Coding Test/Programmers

[Programmers / MySQL] 3월에 태어난 여성 회원 목록 출력하기 (Level 2)

by ngool 2024. 9. 1.

📌 문제

문제 설명

다음은 식당 리뷰 사이트의 회원 정보를 담은 MEMBER_PROFILE 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.

문제

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


📌 나의 풀이

Code

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;

Solution

1. DATE_OF_BIRTH 컬럼에서 MONTH가 3월이면서, GENDER가 'W'이고, TLNO가 NULL이 아닌 행만 추출

  • 3월만 추출할 때에는 MONTH() 함수 사용

2. MEMBER_ID 컬럼 기준 오름차순 정렬

 

3. MEMBER_ID, MEMBER_NAME, GENDER, DATE_OF_BIRTH 컬럼만 가져오기

  • DATE_OF_BIRTH은 DATE_FORMAT 함수를 사용하여 YYYY-mm-dd 형태로 출력

배운 내용

1. 'NULL이 아니다'를 표현하고 싶을 땐 IS NOT 사용하기

NULL이 아니라는 조건을 적을 때, 처음에 저는 '!=''<>'을 떠올렸습니다.

그러나 답이 틀린 것을 보고, NULL은 IS NOT을 사용해야 함을 알게 되었습니다.

 

앞으로는 헷갈리지 않겠죠?