*도서관련 실습문제 

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
복사했습니다!