728x90
반응형
SMALL
📌 문제 정보
- 출처: 문제 링크
- 난이도: ⭐
- 문제 유형: JOIN
- 사용 언어: SQL
🔍 문제 설명
다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(BOOK), 저자 정보(AUTHOR) 테이블입니다.
`BOOK` 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.
`AUTHOR` 테이블은 도서의 저자의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.
`'경제'` 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 출판일을 기준으로 오름차순 정렬해 주세요.
💡 풀이 노트
`BOOK` 테이블
| BOOK_ID | CATEGORY | AUTHOR_ID | PRICE | PUBLISHED_DATE |
| 1 | 인문 | 1 | 10000 | 2020-01-01 |
| 2 | 경제 | 1 | 9000 | 2021-04-11 |
| 3 | 경제 | 2 | 11000 | 2021-02-05 |
`AUTHOR` 테이블
| AUTHOR_ID | AUTHOR_NAME |
| 1 | 홍길동 |
| 2 | 김영호 |
`INNER JOIN` 결과
| BOOK_ID | CATEGORY | AUTHOR_ID | AUTHOR_NAME | PRICE | PUBLISHED_DATE |
| 1 | 인문 | 1 | 홍길동 | 10000 | 2020-01-01 |
| 2 | 경제 | 1 | 홍길동 | 9000 | 2021-04-11 |
| 3 | 경제 | 2 | 김영호 | 11000 | 2021-02-05 |
🚀 코드 (SQL)
SELECT A.BOOK_ID, B.AUTHOR_NAME, DATE_FORMAT(A.PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE
FROM BOOK A JOIN AUTHOR B
ON A.AUTHOR_ID = B.AUTHOR_ID
WHERE A.CATEGORY = "경제"
ORDER BY A.PUBLISHED_DATE
🖥 실행 결과
출력
BOOK_ID AUTHOR_NAME PUBLISHED_DATE
1 홍길동 2020-01-10
2 홍길동 2021-06-10
🔄 시간 다루기
1. `YEAR()`, `MONTH()`, `DAY()` 함수
- MySQL에서 가장 일반적으로 쓰이는 방식
SELECT
YEAR(NOW()) AS year,
MONTH(NOW()) AS month,
DAY(NOW()) AS day;
2. `DATE_FORMAT()` 함수
- 형식을 지정해서 문자열로 추출
SELECT
DATE_FORMAT(NOW(), '%Y') AS year,
DATE_FORMAT(NOW(), '%m') AS month,
DATE_FORMAT(NOW(), '%d') AS day;
3. `EXTRACT()` 함수
- SQL 표준 함수로, 날짜에서 원하는 부분을 추출
SELECT
EXTRACT(YEAR FROM NOW()) AS year,
EXTRACT(MONTH FROM NOW()) AS month,
EXTRACT(DAY FROM NOW()) AS day;
4. `SUBSTRING()` 혹은 `SUBSTR()`을 이용한 문자열 파싱
- 직접 `DATE`를 문자열로 바꿔서 자르는 방식
SELECT
SUBSTRING(NOW(), 1, 4) AS year,
SUBSTRING(NOW(), 6, 2) AS month,
SUBSTRING(NOW(), 9, 2) AS day;
년-월-일 방식으로 추출하기
1. `DATE_FORMAT()` 함수
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS ymd;
- 출력 결과 예시: 2025-04-14
2. `CAST(NOW() AS DATE)` 또는 `DATE()` 함수
- `DATETIME` 값을 `DATE`로 잘라낼 수 있음 (시간 제외):
SELECT DATE(NOW()) AS ymd;
-- 또는
SELECT CAST(NOW() AS DATE) AS ymd;
- 출력 결과 예시: 2025-04-14
📌 깃허브 코드 저장소: https://github.com/glorypang/CodingTest
728x90
반응형
LIST