(1) 박지성이 구매한 도서의 출판사와 같은 출판사에서 도서를 구매한 고객의 이름

SELECT name
FROM Customer
WHERE name != '박지성' AND Customer.custid IN(
SELECT Orders.custid
FROM Orders
WHERE Orders.bookid IN
(SELECT bookid
FROM Book
WHERE publisher IN
(SELECT publisher
FROM Orders,Book
WHERE Orders.custid=1 AND Orders.bookid = Book.bookid))
)

(2) 두 개 이상의 서로 다른 출판사에서 도서를 구매한 고객의 이름

SELECT name FROM Book, Customer, Orders
WHERE Book.bookid = Orders.bookid
AND Customer.custid = Orders.custid
GROUP BY name
HAVING COUNT(DISTINCT Book.publisher) >= 2;

(3) (생략) 전체 고객의 30% 이상이 구매한 도서

SELECT DISTINCT Book.bookname
FROM Book, Orders
WHERE Book.bookid = Orders.bookid
AND Book.bookid IN
(SELECT bookid FROM Orders
GROUP BY bookid
HAVING COUNT(DISTINCT custid) >= (SELECT COUNT(DISTINCT custid) FROM Customer) * 0.3);

SELECT DISTINCT Book.bookname
FROM Book, Customer, Orders
WHERE Book.bookid = Orders.bookid
AND Customer.custid = Orders.custid
GROUP BY bookid
HAVING COUNT(DISTINCT custid) >= (SELECT COUNT(DISTINCT custid) FROM Customer) * 0.3;

4 다음 질의에 대해 DML 문을 작성하시오. (1) 새로운 도서 (‘스포츠 세계’, ‘대한미디어’, 10000원)이 케듀서점에 입고되었다. 삽입이 안 될 경우 필요한 데이터가 더 있는지 찾아보자.

(2) ‘삼성당’에서 출판한 도서를 삭제해야 한다.

(3) ‘이상미디어’에서 출판한 도서를 삭제해야 한다. 삭제가 안 될 경우 원인을 생각해보자.

(4) 출판사 ‘대한미디어’가 ‘대한출판사’로 이름을 바꾸었다.

-- 4 다음 질의에 대해 DML 문을 작성하시오.
-- (1) 새로운 도서 (‘스포츠 세계’, ‘대한미디어’, 10000원)이 케듀서점에 입고되었다.
INSERT INTO Book
VALUES	(12, '스포츠 세계', '대한미디어', 10000);
-- 삽입이 안 될 경우 필요한 데이터가 더 있는지 찾아보자.
-- (2) ‘삼성당’에서 출판한 도서를 삭제해야 한다.
DELETE FROM Book WHERE bookname='삼성당';
-- (3) ‘이상미디어’에서 출판한 도서를 삭제해야 한다. 삭제가 안 될 경우 원인을 생각해보자.
DELETE FROM Book WHERE bookname='이상미디어';
-- (4) 출판사 ‘대한미디어’가 ‘대한출판사’로 이름을 바꾸었다.
UPDATE Book
SET bookname = '대한출판사'
WHERE bookname = '대한미디어';