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;
연도(열 이름) 원하는 연도만 선택