[프로그래머스] SQL 고득점 Kit - select (DATE 함수)

박채은·2023년 6월 22일
0

코딩테스트

목록 보기
40/52

1. 3월에 태어난 여성 회원 목록 출력하기

처음에는 다음과 같이, SQL 문을 작성하였다.

SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_OF_BIRTH 
from MEMBER_PROFILE 
where DATE_OF_BIRTH like '%-03-%' // 생일이 3월인
    and TLNO is not null		  // 전화번호가 NULL인 경우를 제외
    and GENDER = "W"			  // 여성 회원
ORDER BY MEMBER_ID;				  // 회원 ID를 기준으로 오름차순 정렬

하지만, 통과가 되지 않아서 무엇이 문제지?라고 생각했는데 DATE_OF_BIRTH이 아래와 같이 출력되었다.
DATE_FORMAT를 통해서 출력되는 DATE의 포멧을 수정해줘야 한다.

최종 코드

✔️ like 사용

SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH 
from MEMBER_PROFILE 
where DATE_OF_BIRTH like '%-03-%' 
    and TLNO is not null
    and GENDER = 'W'
ORDER BY MEMBER_ID;

✔️ 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) = 3
    and TLNO is not null
    and GENDER = 'W'
ORDER BY MEMBER_ID;

3. 강원도에 위치한 생산공장 목록 출력하기

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS from FOOD_FACTORY
where ADDRESS like '강원도%'
order by FACTORY_ID;

5. 흉부외과 또는 일반외과 의사 목록 출력하기

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
from DOCTOR
where MCDP_CD = 'CS' or MCDP_CD = 'GS'
order by HIRE_YMD DESC, DR_NAME;

6. 조건에 맞는 도서 리스트 출력하기

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
from BOOK
where YEAR(PUBLISHED_DATE) = 2021 and CATEGORY='인문'
order by PUBLISHED_DATE;

해당 문제들을 풀면서 필요한 지식은 DATE 함수ORDER BY이다.

DATE Method

DATE_FORMAT

DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d')
  • %Y: 4자리 년도 (1999)
  • %y: 2자리 년도 (99)
  • %M: 월 이름 (January ~ December)
  • %m: 월 숫자 (00~12)
  • %d: 일 (01~31)
  • %H: 24시간 (00~23)
  • %h: 12시간 (00~12)
  • %i: 분 (0~59)
  • %s: 초 (0~59)
  • %W: 주 이름 (Sunday ~ Saturday)
  • %w: 주 번호 (Sunday(0) ~ Saturday(7))

https://myhappyman.tistory.com/73
https://www.w3schools.com/sql/func_mysql_date_format.asp

SQL 날짜 함수

  • YEAR()
  • MONTH()
  • DAYOFMONTH(): 일을 반환 (1~31)
  • HOUR()
  • MINUTE()
  • SECOND()
  • DAYOFWEEK(date): 요일을 반환(일요일(1) ~ 토요일(7))
  • WEEKDAY(date): 요일을 반환(월요일(0) ~ 일요일(6))

SQL 날짜 함수
https://velog.io/@seyeop03/SQL%EC%9D%98-%ED%95%A8%EC%88%98%EC%A0%95%EB%A6%AC

ORDER BY

  • ORDER BY A : A에 따라 오름차순
  • ORDER BY A DESC : A에 따라 내림차순

0개의 댓글