SQL_ORACLE

3장 SQL 기초 예제 복습

유호야 2020. 10. 22. 18:01
반응형
--3.1. 모든 도서의 이름과 가격을 검색하시오 146p.
SELECT bookname, price FROM Book;

--3.2. 모든 도서의 도서번호, 도서이름, 출판사, 가격을 검색하시오.
SELECT bookid, bookname, publisher, price FROM Book;
SELECT * FROM Book;

--3.3 도서 테이블에 있는 모든 출판사를 검색하시오.
SELECT DISTINCT publisher FROM Book;

--3.4. 가격이 20,000원 미만인 도서를 검색하세요.
SELECT * FROM Book WHERE price < 20000;

--3.5. 가격이 20,000원 이하이고 10,000원 이상인 도서를 검색하세요.
SELECT * FROM Book WHERE price >= 10000 AND price <= 20000;
SELECT * FROM Book WHERE price BETWEEN 10000 AND 20000;

--3.6. 출판사가 '굿스포츠' 혹은 '대한미디어'인 도서를 검색하시오.
SELECT * FROM Book WHERE publisher IN ('굿스포츠', '대한미디어');

--3.7. '축구의 역사'를 출간한 출판사를 검색하시오.
SELECT * FROM Book WHERE bookname LIKE '축구의 역사';

--3.8. 도서이름에 '축구'가 포함된 출판사를 검색하시오.
SELECT bookname, publisher FROM Book WHERE bookname LIKE '%축구%';

--3.9. 도서이름의 왼쪽 두 번째 위치에 '구'라는 문자열을 갖는 도서를 검색하시오.
SELECT * FROM Book WHERE bookname LIKE '_구%';

--3.10. 축구에 관한 도서 중 가격이 20,000원인 도서를 검색하시오.
SELECT * FROM Book WHERE price >= 20000 AND bookname LIKE '%축구%';

--3.11. 출판사가 '굿스포츠' 혹은 '대한미디어'인 도서를 검색하시오.
SELECT * FROM Book WHERE publisher = '굿스포츠' OR publisher = '대한미디어';
SELECT * FROM Book WHERE publisher IN ('굿스포츠', '대한미디어');

--3.12. 도서를 이름순으로 검색하시오.
SELECT * FROM Book ORDER BY bookname DESC;

--3.13. 도서를 가격순으로 검색하고, 가격이 같으면 이름순으로 검색하시오.
SELECT * FROM Book ORDER BY price, bookname;

--3.14. 도서를 가격의 내림차순으로 검색하시오. 만약 가격이 같다면 출판사의 오름차순으로 출력하시오.
SELECT * FROM Book ORDER BY price DESC, publisher ASC;

--3.15 고객이 주문한 도서의 총판매액을 구하시오.
SELECT SUM(saleprice) FROM Orders;

--3.16. 2번 김연아 고객이 주문한 도서의 총판매액을 구하시오.
SELECT SUM(saleprice) FROM Orders WHERE custid = 2;

--3.17. 고객이 주문한 도서의 총판매액, 평균값, 최저가, 최고가를 구하시오.
SELECT SUM(saleprice), AVG(saleprice), MIN(saleprice), MAX(saleprice) FROM Orders;

--3.18. 마당서점의 도서 판매 건수를 구하시오.
SELECT COUNT(*)
FROM Orders;

--3.19.고객별로 주문한 도서의 총수량과 총판매액을 구하시오.
SELECT custid, SUM(saleprice) AS 총판매액, SUM(*) AS 총수량 FROM Orders GROUP BY custid; 

--3.20. 가격이 8000원 이상인 도서를 구매한 고객에 대하여, 고객별 주문 도서의 총 수량을 구하시오.
-- 단 두 권 이상 구매한 고객만 구한다.
SELECT COUNT(custid) FROM Orders WHERE saleprice >= 8000 GROUP BY custid;
SELECT custid, COUNT(*) FROM Orders WHERE saleprice >= 8000 GROUP BY custid HAVING COUNT(*) >= 2;

--3.21.고객과 고객의 주문에 관한 데이터를 모두 보이시오.
SELECT * FROM Orders od,Customer cs
WHERE od.custid = cs.custid;

--3.22.고객과 고객의 주문에 관한 데이터를 모두 보이시오.
-- 단,데이터를 고객번호 순으로 정렬하세요.
SELECT * FROM Orders,Customer 
WHERE Orders.custid = Customer.custid
ORDER BY Customer.custid
;

--3.23. 고객의 이름과 고객이 주문한 도서의 판매가격을 검색하세요.
SELECT Customer.name,Orders.saleprice FROM Orders,Customer 
WHERE Orders.custid = Customer.custid;

--3.24.고객별로 주문한 모든 도서의 총 판매액을 구하고, 고객별로 정렬하세요.
SELECT Customer.name,SUM(Orders.saleprice) FROM Orders,Customer 
WHERE Orders.custid = Customer.custid
GROUP BY Customer.name
ORDER BY Customer.name
;

3.20.

--3.25. 고객의 이름과 고객이 주문한 도서의 이름을 구하세요.
SELECT Customer.name,Book.bookname FROM Orders,Customer,Book
WHERE Orders.custid = Customer.custid 
AND Orders.bookid = Book.bookid;

--3.26. 가격이 20000원인 도서를 주문한 고객의 이름과 도서의 이름을 구하시오.
SELECT cs.name,bk.bookname FROM Orders od,Customer cs,Book bk
WHERE od.custid = cs.custid 
AND od.bookid = bk.bookid
AND od.saleprice = 20000
;

--3.27.도서를 구매하지 않은 고객을 포함하여 
--고객의 이름과 고객이 주문한 도서의 판매가격을 구하시오.
--외부 조인 Customer 기준...
SELECT Customer.name,Orders.saleprice FROM 
    Customer LEFT OUTER JOIN Orders
    ON Customer.custid = Orders.custid
;

--3.28. 가장 비싼 도서의 이름을 보시이오.	
SELECT bookname FROM Book WHERE price = (SELECT MAX(price) FROM Book);

--3.29. 도서를 구매한 적이 있는 고객의 이름을 검색하시오.
SELECT name FROM customer WHERE custid IN (SELECT custid FROM Orders);

--3.30 '대한미디어'에서 출판한 도서를 구매한 고객의 이름을 보이시오.
SELECT name 
FROM Customer 
WHERE custid IN (SELECT custid 
                 FROM Orders
                 WHERE bookid IN (SELECT bookid 
                                  FROM Book 
                                  WHERE publisher = '대한미디어'));
                                  

--3.31.출판사별로 출판사의 평균 도서 가격보다 비싼 도서를 구하시오.

--3.32.도서를 주문하지 않은 고객의 이름을 보이시오.

--3.33.주문이 있는 고객의 이름과 주소를 보이시오.

                                  
                                  

3.29

--Q.김씨인 고객의 정보를 출력하세요...


--Q.박 으로 시작하고 리로 끝나는 고객의 정보를 출력하세요.

--Q.축구에 관한 도서중 가격이 20000원 이상인 도서를 검색하세요.

--Q.도서를 이름순으로 검색하세요.(ORDER BY)

--Q.도서를 가격순으로 검색하세요.

--Q.도서를 가격순으로 검색하되 단, 가격이 같으면 도서명순으로 검색하자.

--Q.도서를 가격의 내림차순으로 검색해보자.

--Q.도서를 가격의 내림차순으로 검색하되
--만약 가격이 같다면..출판사의 오름차순으로.

--집계 함수 (통계)
--Q.고객이 주문한 도서의 총 판매액을 구하세요.


--Q.2번 김연아 고객이 주문한 도서의 총 판매액은??

--Q.(모든)고객이 주문한 총 판매액 , 평균가 , 최저가 , 최고가를 구하세요.

--Q.마당 서점의 도서 판매 건수를 구하세요....
--COUNT : 행의 개수를 출력..

--Q.고객별 주문한 도서의 총 수량과 총 판매액을 구하세요.

--GROUP BY : 기준이되는 속성만 출력가능 , 나머지 속성은 집계해서 출력.

--Q.가격이 8000원 이상인 도서를 구매한 고객에 대하여, 
--고객별 주문 도서의 총 수량을 구하시오.
--단, 두권 이상 구매한 고객만 구한다.


--Q.고객과 고객의 주문에 관한 데이터를 모두 보이시오.


--Q.고객과 고객의 주문에 관한 데이터를 모두 보이시오.
-- 단,데이터를 고객번호 순으로 정렬하세요.

--Q. 고객의 이름과 고객이 주문한 도서의 판매가격을 검색하세요.


--Q.고객별로 주문한 모든 도서의 총 판매액을 구하고, 고객별로 정렬하세요.


--동명이인...custid로 gruop...


--Q. 고객의 이름과 고객이 주문한 도서의 이름을 구하세요.


--Q. 가격이 20000원인 도서를 주문한 고객의 이름과 도서의 이름을 구하시오.


--Q.도서를 구매하지 않은 고객을 포함하여 
--고객의 이름과 고객이 주문한 도서의 판매가격을 구하시오.
--(외부 조인)


--Q.등록된 책 가격의 평균가격 보다 높은 책의 이름을 구하세요.


--Q.가장 비싼 도서의 이름을 구하세요...


--Q.도서를 구매한 적이 있는 고객의 이름을 구하세요.

    
--Q.대한 미디어에서 출판한 도서를 구매한 고객의 이름을 구하세요.
반응형