본문 바로가기
Study/SQL

SQL 고득점 Kit - Select (3월에 태어난 여성 회원 목록 출력)

by Wanooky 2023. 2. 17.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

조건은 3월인 여성회원의 ID, 이름, 성별, 생년월일을 조회하는데

 

전화번호가 Null인 경우 제외, 그리고 회원 ID를 기준으로 오름차순 정렬을 시켜주어야 한다.

 

테이블의 형태는 이러한데, date_of_brith는 date 형으로, 출력하는데 필요한 형태는 년,월,일 까지만 이다.

 

날짜와 관련된 함수를 간단히 정리를 해보자면

 

sysdate() : 현재 날짜와 시각을 출력

now() : 현재 날짜를 출력

 

date_format() : 숫자나 날짜를 주어진 format형태로 문자열 타입으로 변환 (mysql) ex) date_format(컬럼, format)

to_char() : 숫자나 날짜를 주어진 format형태로 문자열 타입으로 변환 (oracle) ex) to_char(컬럼, format)

 

date_format은 format을 넣을 때 대소문자를 잘 구분해주어야하는데, 대소문자에 따라 다르다.

형식 설명
%Y 4자리 연도
%y 2자리 연도
%m 2자리(00-12)
%c 1자리, 10보다 작을 경우(1-12)
%M 이름(January,February...)
%b 줄인 이름(Jan,Feb)
%d 2자리
%e 1자리, 10보다 작을경우(0-31)
%D 1st, 2nd...
DATE_FORMAT(날짜, 'FORMAT') 날짜를 해당 포멧으로 변환
DATE(날짜) 날짜를 '연도-월-일'로 변환
YEAR(날짜) 날짜의 연도 반환
MONTH(날짜) 날짜의 월 반환

이를 참조해서 문제 풀이를 한다면, 코드는 다음과 같다.

 

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) in (3) and gender in ('W') and tlno is not null
order by member_id;