*도서관련 실습문제
1. 저작 형태가 옮김 에 해당하는 작가들이 총 몇 명인지 계산하는 SQL 구 문을 작성하시오
결과 헤더는 작가 (명) 으로 표시되도록 할 것
SELECT COUNT(DISTINCT WRITER_NM)"작가(명)"
FORM TB_BOOK_AUTHOR
JOIN TB_WRITER USING (WRITER_N0)
WHERE COMPOSE_TYPE = '옮김';
2. 가장 많은 책을 쓴 작가 3 명의 이름과 수 량을 표시하되 , 많이 쓴 순서대로 표시하는 SQL 구 문을 작성하시오
단 , 동명이인( 同名異人 ) 작가는 없다고 가정한다 .( 결과 헤더는 작가 이름 ”, 권 수 로 표시 되도록 할것)
SELECT *
FROM ( SELECT WRITER_NM"작가이름", COUNT(*)"권 수"
FROM TB_BOOK_AUTHOR
JOIN TB_WRITER USING (WRITER_NO)
GROUP BY WRITER_NM
ORDER BY 2 DESC)
WHERE ROWNUM <= 3;
3. 작가 정보 테이블의 모든 등록일자 항목이 누락되어 있는 걸 발견하였다 . 누락된 등록일자 값을 각 작가의
최초 출판도서의 발행일과 동일한 날짜 로 변경시키는 SQL 구 문을 작성하시오 (COMMIT 처리할 것)
UPDATE TB_WRITER W
SET REGIST_DATE = (SELECT MIN(ISSUE_DATE)
FROM TB_BOOK
JOIN TB_BOOK_AUTHOR A USING (BOOK_NO)
WHERE W.WRITER_NO = A.WRITER_NO );
COMMIT;
4.2006년 1월 기준으로 등록된 지 31년 이상 된 작가 이름을 이름순으로 표시하는 SQL 구문을 작성하시오.
SELECT *
FROM TB_WRITER
WHERE MONTHS_BETWEEN(TO_DATE('20060101','RRRRMMDD'),REGIST_DATE)>=372; --372=12*31
5.'아타트롤' 도서 작가와 역자를 표시하는 SQL 구문을 작성하시오. (결과 헤더는 ‘도서명’,’저자’,’역자’로 표시할 것)
SELECT BOOK_NM"도서명", D.WRITER_NM"저자", E.WRITER_NM"역자"
FROM TB_BOOK A
JOIN TB_BOOK_AUTHOR B ON(A.BOOK_NO = B.BOOK_NO)
JOIN TB_BOOK_TRANSLATOR C ON(A.BOOK_NO = C.BOOK_NO)
JOIN TB_WRITER D ON (B.WRITER_NO = D.WRITER_NO)
JOIN TB_WRITER E ON (C.WRITER_NO = E.WRITER_NO)
WHERE BOOK_NM = '아타트롤';
6. 요즘 들어 다시금 인기를 얻고 있는 '황금가지' 출판사를 위한 기획전을 열려고 한다. '황금가지'출판사에서 발행한 도서 중
--재고 수량이 10권 미만인 도서명과 가격, 재고상태를 표시하는 SQL 구문을작성하시오.
--재고 수량이 5권 미만인 도서는 ‘추가주문필요’로, 나머지는 ‘소량보유’로 표시하고,
--재고수량이 많은 순, 도서명 순으로 표시되도록 한다.
SELECT BOOK_NM, PRICE,
CASE WHEN STOCK_QTY < 5 THEN '추가주문필요'
ELSE '소량보유'
END "재고상태"
FROM TB_BOOK
WHERE STOCK_QTY < 10
AND PUBLISHER_NM = '황금가지'
ORDER BY STOCK_QTY,BOOK_NM;
'ORACLE > ORACLE 실습문제' 카테고리의 다른 글
ORACLE 실습문제 _PLSQL (0) | 2022.11.25 |
---|---|
ORACLE 실습문제 SELECT_ JOIN _ 내부조인 (0) | 2022.11.17 |