Oracle 실습문제 풀이 (1)

서하루·2022년 11월 29일
0
post-thumbnail

(1). 저작 형태가 "옮김"에 해당하는 작가들이 총 몇 명인지 계산하는 SQL 구문을 작성하시오. 결과 헤더는 "작가(명)"으로 표시되도록 할 것


내가 작성한 코드

➡️ 출력결과
: 작가명 155명



문제점

  • 중복된 작가의 이름을 제외하지 않았다.
  • 중복된 작가가 카운드됐다.

해결방안

  • 중복제거하는 함수인 DISTINCT를 써야한다.

정답

➡️ 출력결과
: 작가명 102명



(2) 가장 최근에 발간된 최신작 이름과 발행일자, 출판사 이름을 표시하는 SQL 구문을 작성하시오.


내가 작성한 코드

➡️ 출력결과
: 모든 데이터가 출력됨..



문제점

  • 최신작만 나타내는 함수를 작성하지 못했다.
  • 내가 쓴 코드대로 실행하면 모든 데이터가 조회된다.

해결방안

  • 인라인뷰를 적용하여 ROWNUM 컬럼을 사용해야한다.

정답

➡️ 출력결과
: 가장 최신작인 도서 1권이 조회됐다.



(3) 요즘 들어 다시금 인기를 얻고 있는 '황금가지' 출판사를 위한 기획전을 열려고 한다. '황금가지' 출판사에서 발행한 도서 중 재고 수량이 10권 미만인 도서명과 가격, 재고상태를 표시하는 SQL구문을 작성하시오. 재고 수량이 5권 미만인 도서는 '추가주문필요'로, 나머지는 '소량보유'로 표시하고 재고수량이 많은 순, 도서명 순으로 표시되도록 한다.


내가 작성한 코드

못풀었읍니다..


해결방안

  • 재고수량이 5권 미만인 도서는 '추가주문필요' 이 구문을 CASE WHEN THEN 함수로 풀어야한다.
  • CASE WHEN 재고수량 < 5 THAN '추가주문필요' ELSE '소량보류' END
  • CASE WHEN THEN 구문은 조건식 1이 참이면 결과값1을 반환 !
  • 또한, 재고수량이 10개 미만인 데이터들을 출력해야하므로 WHERE절에 재고수량 < 10 을 작성한다.

정답



많이 헷갈린 날짜 함수

💡 MONTHS_BETWEEN(DATE1, DATE2)

  • 두 날짜 사이의 개월수를 반환해줌
-- 현재기준으로 최초 발행일이 30년이 경과된 도서 검색
MONTHS_BETWEEN(SYSDATE, 최초발행일) >= 360; 

-- 2010년 6월 기준으로 등록된지 31년 이상된 작가 이름 검색
MONTHS_BETWEEN('20100601', 'RRRRMMDD'), 등록날짜) >= 372


-- 

0개의 댓글