본문 바로가기
Language/DB

[Programmers | SQL | JOIN 문제 풀이] 조건에 맞는 도서와 저자 리스트 출력하기 - Solution with JOIN & 날짜 형식 변경

by ㅇ달빛천사ㅇ 2024. 7. 2.
728x90

KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | SQL CODEKATA

📖 조건에 맞는 도서와 저자 리스트 출력하기

🏷 관련 주제 : JOIN 날짜 형식 변경 TO_CHAR() DATE_FORMAT() ORDER BY




✔️ (Oracle) Solution with JOIN & TO_CHAR()

SELECT BOOK_ID
       , AUTHOR_NAME
       , TO_CHAR(PUBLISHED_DATE, 'yyyy-mm-dd') PUBLISHED_DATE
FROM BOOK B
     , AUTHOR A
WHERE B.AUTHOR_ID = A.AUTHOR_ID
      AND B.CATEGORY = '경제'
ORDER BY 3;
실행 결과

✔️ (MySQL) Solution with JOIN & DATE_FORMAT()

SELECT BOOK_ID
       , AUTHOR_NAME
       , DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') PUBLISHED_DATE
FROM BOOK B
     , AUTHOR A
WHERE B.AUTHOR_ID = A.AUTHOR_ID
      AND B.CATEGORY = '경제'
ORDER BY 3;
실행 결과


💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

📌 오늘 만난 문제 : '경제' 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 출판일을 기준으로 오름차순 정렬해주세요.


1. BOOK 테이블과 AUTHOR 테이블을 도서 IDJOIN하여
카테고리, 도서 ID, 저자명, 출판일을 조회하자.

  • Oracle & MySQL
    SELECT CATEGORY
           , BOOK_ID
           , AUTHOR_NAME
           , PUBLISHED_DATE
    FROM BOOK B
         , AUTHOR A
    WHERE B.AUTHOR_ID = A.AUTHOR_ID;
    실행 결과

2. 위의 조회 결과에서 카테고리'경제' 인 인스턴스만 조회하자.

  • Oracle & MySQL
    SELECT CATEGORY
           , BOOK_ID
           , AUTHOR_NAME
           , PUBLISHED_DATE
    FROM BOOK B
         , AUTHOR A
    WHERE B.AUTHOR_ID = A.AUTHOR_ID
          AND B.CATEGORY = '경제';
    실행 결과

3.  위의 조회결과에서 카테고리 칼럼은 제외하고
출판일'년-월-일' 형식으로 출력하자.

MySQL : DATE_FORMAT(출판일, '%Y-%m-%d')
Oracle : TO_CHAR(출판일, 'yyyy-mm-dd')

  • Oracle
    SELECT BOOK_ID
           , AUTHOR_NAME
           , TO_CHAR(PUBLISHED_DATE, 'yyyy-mm-dd') PUBLISHED_DATE
    FROM BOOK B
         , AUTHOR A
    WHERE B.AUTHOR_ID = A.AUTHOR_ID
          AND B.CATEGORY = '경제';
    실행 결과

  • MySQL
     class="language-sql"SELECT BOOK_ID
           , AUTHOR_NAME
           , DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') PUBLISHED_DATE
    FROM BOOK B
         , AUTHOR A
    WHERE B.AUTHOR_ID = A.AUTHOR_ID
          AND B.CATEGORY = '경제';
    실행 결과

4. 출판일을 기준으로 오름차순 정렬하자.

  • Oracle
    SELECT BOOK_ID
           , AUTHOR_NAME
           , TO_CHAR(PUBLISHED_DATE, 'yyyy-mm-dd') PUBLISHED_DATE
    FROM BOOK B
         , AUTHOR A
    WHERE B.AUTHOR_ID = A.AUTHOR_ID
          AND B.CATEGORY = '경제'
    ORDER BY 3;
    실행 결과

  • MySQL
    SELECT BOOK_ID
           , AUTHOR_NAME
           , DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') PUBLISHED_DATE
    FROM BOOK B
         , AUTHOR A
    WHERE B.AUTHOR_ID = A.AUTHOR_ID
          AND B.CATEGORY = '경제'
    ORDER BY 3;
    실행 결과

💬 무엇을 새롭게 알았는지

  • JOIN하는 쿼리를 작성해 보았다.
  • 날짜 형식을 변경하기
    • MySQL : DATE_FORMAT(출판일, '%Y-%m-%d')
    • Oracle : TO_CHAR(출판일, 'yyyy-mm-dd')
  • 문자열 일치 : 칼럼 = '문자열'
  • 정렬칼럼 또는 별칭 또는 칼럼 번호로 할 수 있다.






728x90


Top