출처
문제
'경제' 카테고리에 속하는 도서들의 도서 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] USING, ON 조건절
USING 조건절 FROM절의 USING 조건절을 이용하면 같은 이름을 가진 컬럼들 중에서 원하는 컬럼에 대해서만 EQUI JOIN을 할 수 있다. sql server에서는 지원하지 않는다. SELECT * FROM DEPT JOIN DEPT_TEMP USING (DEPTNO
moonpiechoi.tistory.com
SQL 날짜와 시간, 문자열 다루기
날짜와 시간은 date 와 string 을 왔다갔다 하므로 잘 비교해줘야 한다.날짜를 문자형 형태로 비교하기 위해서는 date 타입을 string으로 변환TO_CHAR() 함수를 이용string 형태를 date 형태로 비교하고 싶
velog.io
'문제풀이 > 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 |