반응형
CHAPTER3 연습문제
--01. 마당서점의 고객이 요구하는 다음 질문에 대해 SQL문을 작성하시오.
--1 도서번호가 1인 도서의 이름
SELECT bookname FROM Book WHERE bookid = 1;
--2 가격이 20000원 이상인 도서의 이름
SELECT bookname FROM Book WHERE price >= 20000;
--3 박지성의 총 구매액
SELECT SUM(saleprice) FROM Orders WHERE custid = (
SELECT custid FROM customer WHERE name = '박지성'
);
--4 박지성이 구매한 도서의 수
SELECT COUNT(*) FROM Orders WHERE custid = (
SELECT custid FROM Customer WHERE name = '박지성'
);
--5 박지성이 구매한 도서의 출판사 수
SELECT DISTINCT COUNT(publisher) FROM Book WHERE bookid IN (SELECT bookid FROM Orders WHERE custid = (SELECT custid FROM Customer WHERE name = '박지성'));
--6 박지성이 구매한 도서의 이름, 가격, 정가와 판매가격의 차이
SELECT book.bookname FROM Orders, Customer, Book
WHERE Orders.custid = Customer.custid AND Orders.bookid = Book.bookid AND orders.custid = 1;
--7 박지성이 구매하지 않은 도서의 이름
SELECT bookname FROM Book MINUS
SELECT book.bookname FROM Orders, Customer, Book
WHERE Orders.custid = Customer.custid AND Orders.bookid = Book.bookid AND orders.custid = 1;
--02. 마당서점의 운영자와 경영자가 요구하는 다음 질문에 대해 SQL 문을 작성하시오.
--1 마당서점 도서의 총수
SELECT COUNT(*) FROM Book;
--2 마당서점에 도서를 출고하는 출판사의 총수
SELECT COUNT(DISTINCT publisher) FROM Book;
--3 모든 고객의 이름, 주소
SELECT name, address FROM Customer;
--4 2020년 7월 4일- 7월 7일 사이에 주문받은 도서의 주문번호
SELECT orderid FROM Orders WHERE Orderdate between '2014-07-04' and '2014-07-07';
--5 2014년 7월 4일 - 7일 제외한 도서의 주문번호
SELECT orderid FROM Orders
MINUS SELECT orderid FROM Orders WHERE Orderdate between '2014-07-04' and '2014-07-07';
SELECT * FROM Customer;
--6 성이 '김'씨인 고객의 이름과 주소
SELECT name, address FROM Customer where name LIKE '김%';
--7 성이 '김'씨이고 이름이'아'로 끝나는 고객의 이름과 주소
SELECT name, address FROM Customer where name LIKE '김_아';
--8 주문하지 않은 고객의 이름(서브쿼리 사용)
SELECT name FROM Customer
MINUS
SELECT name FROM Customer where custid IN (SELECT custid FROM Orders);
--9 주문 금액의 총액과 주문의 평균 금액
SELECT SUM(saleprice) 주문총액, AVG(saleprice) "주문 평균금액" FROM Orders;
--10 고객의 이름과 고객별 구매액
SELECT customer.name, SUM(saleprice) FROM Orders, Customer WHERE Orders.custid = Customer.custid GROUP BY customer.name;
--11 고객의 이름과 고객이 구매한 도서 목록
SELECT customer.name, bookname FROM Orders, Customer, Book WHERE Orders.custid = Customer.custid and orders.bookid= book.bookid;
--12 도서의 가격과 판매가격의 차이가 가장 많은 주문
SELECT * FROM Book, Orders WHERE orders.bookid= book.bookid AND book.price - orders.saleprice = (
SELECT MAX(book.price - orders.saleprice) FROM Orders, Book WHERE Orders.bookid = Book.bookid);
--13 도서의 판매액 평균보다 자신의 구매액 평균이 더 높은 고객의 이름
SELECT name FROM (SELECT customer.name, AVG(orders.saleprice)sum FROM Orders, Customer WHERE Orders.custid = Customer.custid GROUP BY customer.name) cum WHERE cum.sum >= (select avg(saleprice) from orders);
반응형
'SQL_ORACLE' 카테고리의 다른 글
Name이 null이면 'No name'으로 처리하기 (0) | 2021.02.13 |
---|---|
SQL의 SYSDATE는 사실 분단위로 작성되어 있다. (0) | 2021.02.10 |
RowNum은 ORDER BY보다 먼저 실행된다..... (0) | 2021.02.10 |
SQL 내부조인 (0) | 2021.02.03 |
3장 SQL 기초 예제 복습 (0) | 2020.10.22 |