출처
문제
'경제' 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 출판일을 기준으로 오름차순 정렬해주세요.
단, PUBLISHED_DATE 연-원 일 형태
문제에 대한 해석
풀이(MYSQL)
select b.book_id, au.author_name, date_format(b.published_date,'%Y-%m-%d')
from book b join author au on b.author_id = au.author_id
where category like '%경제%'
order by b.published_date
작동순서
💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환
- FROM 절: book테이블과 author테이블에서 author_id을 기준로 inner join 한다
- WHERE 절: 경제가 포함된 카테고리를 필터링 한다
- SELECT 절: book_id와 author_name를 조회하고 date_format함수를 통해 연-원-일 순으로 조회한다
- ORDER BY 절: 출간일이 오름차순(오래된 순)으로 정렬한다
다른사람 풀이
SELECT
BOOK_ID,
A.AUTHOR_NAME,
DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') as PUBLISHED_DATE
FROM BOOK B JOIN AUTHOR A USING(AUTHOR_ID)
WHERE B.CATEGORY = '경제'
ORDER BY PUBLISHED_DATE
배운점
- 날짜-> 문자열: date_format(날짜, 출력형식)
- 날짜형 데이터의 유형은?
- SELECT DATE_FORMAT('2019-09-16 20:23:12', '%Y/%M/%D') -- 2019/09/16 출력
- 문자-> 날짜열:str_to_date(문짜, 출력형식)
- SELECT STR_TO_DATE('20080101', '%Y-%M-%D') -- 20080101이라는 문자를 2008-01-01의 형태의 날짜로 리턴
- using: FROM절의 USING 조건절을 이용하면 같은 이름을 가진 컬럼들 중에서 원하는 컬럼에 대해서만 EQUI JOIN을 할 수 있다.
참고
https://moonpiechoi.tistory.com/119
'문제풀이 > SQL(My sql)' 카테고리의 다른 글
[문제풀이] SQL개인과제(초급/중급) (0) | 2024.01.08 |
---|---|
[문제풀이] 조건별로 분류하여 주문상태 출력하기 (2) | 2024.01.08 |
[문제풀이] 보호소에서 중성화된 동물 (1) | 2024.01.08 |
[문제풀이] 오랜 기간 보호한 동물(2)-datediff (0) | 2024.01.05 |
[문제풀이] 있었는데 없습니다-datediff (0) | 2024.01.05 |