프로그래머스 - SQL

[SQL 문제] 조건에 맞는 도서와 저자 리스트 출력하기 (join, date_format)

DorYi 2024. 7. 5. 13:11

문제 설명

BOOK 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.

AUTHOR 테이블은 도서의 저자의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.

 

문제

'경제' 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요.

 

주의사항

PUBLISHED_DATE의 데이트 포맷이 예시와 동일해야 정답처리 됩니다.

 

답안

select b.book_id,
       a.author_name,
       date_format(b.published_date, '%Y-%m-%d')
from
book b join author a on b.author_id=a.author_id
where category = "경제"
order by 3

 

문제 풀이

1. 경제 카테고리에 속하는 도서들 ➡️ 조건 : where = "경제"

2. select 절에 불러와야 하는 컬럼이 두 개의 테이블에서 가져와야 하기 때문에 join 사용

3. 출판일 기준 오름차순 정렬 ➡️ 오름차순 정렬 : order by

4. 주의사항 데이트 포멧 변경 ➡️ date_format(b.published_date, '%Y-%m-%d') 사용

 

 

*데이트 포멧 변경 방법

date_format ( 컬럼 명, 변경할 데이트)
데이트 사용할 때 대문자와 소문자의 의미가 다르기 때문에 잘 구분해야 함!
  Specifier Description Example 
1 %Y 연도(year): 4자리 표현 2021
2 %y 연도(year): 뒤에서 2자리 표현 21
3 %a 요일(weekday): 이름 줄임표현 Mon, Tue, Wed, ...
4 %W 요일(weekday): 이름 Sunday, ..., Saturday
5 %w 요일(weekday): 숫자 활용 0 = Sunday, ... , 6 = Saturday
6 %b 월(month): 이름 줄임표현 Jan, Feb, Mar, ...
7 %M 월(month): 이름 January, February, ..., December
8 %c 월(month): 숫자 표기(자릿수 고정 X) 0, 1, 2, ..., 12
9 %m 월(month): 숫자 표기(자릿수 2개로 고정) 00, 01, ..., 12
10 %D 일(day): 접미사 활용 0th, 1st, 2nd, 3rd, ...
11 %d 일(day): 숫자 활용(1개월 단위) 0, 1, 2, 3, ...
12 %j 일(day): 숫자 활용(1년 단위) 001, 002, ..., 366
13 %p 오전/오후 구분 AM or PM
14 %T 24시간제 시간 표기 23:05:12 ("오후 11시 5분 12초")
15 %r 12시간제 시간 표기 및 오전/오후 구분 11:05:12 PM
16 %f Microseconds 000000, ...., 999999
17 %H 시간(hour): 24시간제 00, 01, ..., 23
18 %k 시간(hour): 24시간제 00, 01, ..., 23
19 %h 시간(hour): 12시간제 01, 02, ..., 12
20 %I 시간(hour): 12시간제 01, 02, ..., 12
21 %i 분(minute): 1시간 단위 00, 01, ..., 59
22 %S 초(seconds) 00, ..., 59
23 %s 초(seconds) 00, ..., 59
24 %U 주(Week): 1년 단위 (일요일이 1주의 시작) 00, 01, ..., 53
25 %u 주(Week): 1년 단위 (월요일이 1주의 시작) 00, 01, ..., 53
26 %v 주(Week): 1년 단위 (일요일이 1주의 시작) 01, 02, ..., 53