(프로그래머/SQL High Score Collection) SELECT——조건에 맞는 도서 목록 출력

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

프로그램 제작자

코드 중심 개발자를 고용하십시오. 스택 기반 위치 일치. 프로그래머를 위한 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

프로그래머.co.kr

문제 설명

다음은 서점에서 판매되는 도서 정보(BOOK) 일람표입니다.

이 테이블은 각 책에 대한 정보를 담고 있는 테이블로 다음과 같은 구조를 가지고 있습니다.

열 이름 TypeNullableDescription

책 번호 정수 잘못된 ISBN
범주 변수(N) 잘못된 카테고리 (경제, 인문, 소설, 생활, 기술)
저자 번호 정수 잘못된 저자 번호
가격 정수 잘못된 판매가(원)
게시_날짜 날짜 잘못된 출시일

질문

책상 위에 2021년에 게시됨 “인문학” 특정 카테고리에 속하는 도서 목록을 찾아 도서 ID(BOOK_ID)와 발행일(PUBLISHED_DATE)을 출력하는 SQL 문을 작성합니다.


결과를 게시 날짜의 오름차순으로 정렬하십시오.

예를 들어 테이블이

BOOK_IDCATEGORYAUTHOR_IDPRICEPUBLISHED_DATE

하나 인문학 하나 10000 2020-01-01
2 경제 2 9000 2021-02-05
인문학 2 11000 2021-04-11
4 인문학 10000 2021-03-15
5 하나 12000 2021-01-10

대상 도서는 도서 ID가 3번과 4번인 도서이므로 다음과 같습니다.

BOOK_IDPUBLISHED_DATE

2021-04-11
4 2021-03-15

게시 날짜 오름차순으로 정렬해야 하므로 다음과 같은 결과를 얻어야 합니다.

BOOK_IDPUBLISHED_DATE

4 2021-03-15
2021-04-11

경고하다

PUBLISHED_DATE는 응답할 예와 동일한 날짜 형식이어야 합니다.


❌❌ 오답

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE PUBLISHED_DATE LIKE '2021 %' AND CATEGORY LIKE '% 인문 %'
ORDER BY PUBLISHED_DATE ASC;

처음에 이거인줄 알았는데

DATE_FORMAT이 생각되었지만 잘못 사용되었습니다.

LIKE 문도 적절하게 사용해야 합니다.

.

# MYSQL - sol.1

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE DATE_FORMAT(PUBLISHED_DATE, '%Y') = 2021 AND CATEGORY ='인문'
ORDER BY PUBLISHED_DATE ASC;

DATE_FORMAT(컬럼명, ‘%Y’) = 2020, 열에서 필요한 연도만 선택

# MYSQL - sol.2

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 ASC;

연도(열 이름) 원하는 연도만 선택