-- 1.(5)박지성이 구매한 도서의 출판사 수
select count(distinct publisher) as "출판사 수"
from customer t1, orders t2, book t3
where t1.custid = t2.custid
and t2.bookid = t3.bookid
and t1.name = '박지성';
--1.(6)박지성이 구매한 도서의 이름, 가격, 정가와 판매가격의 차이
select t3.bookname as 이름, t3.price as 가격, t3. price - t2.saleprice as 차액
from customer t1, orders t2, book t3
where t1.custid = t2.custid
and t2.bookid = t3.bookid
and t1.name = '박지성';
-- 1.(7)박지성이 구매하지 않은 도서의 이름
select bookname from book t1
where not exists (select bookname from customer t1, orders t2
where t1.custid = t2.custid
and t2. bookid = t1. bookid
and t1.name = '박지성');
--2.(8) 주문하지 않은 고객의 이름(부속질의 사용)
select name from customer
where name not in (select name from orders t1, customer t2
where t1.custid = t2.custid);
--2.(9) 주문 금액의 총액과 주문의 평균 금액
select sum(saleprice) as 총액, avg(saleprice) as 평균
from orders;
--2.(10) 고객의 이름과 고객별 구매액
select t2.name as 이름, sum(saleprice) as 구매액
from orders t1, customer t2
where t1.custid = t2.custid
group by t2.name
order by sum(saleprice) desc;
--2.(11)고객의 이름과 고객이 구매한 도서 목록
select t1.name as 이름, t3.bookname as 도서
from customer t1, orders t2, book t3
where t1.custid = t2.custid
and t2.bookid = t3.bookid;
--2.(12)도서의 가격(book 테이블)과 판매가격(orders 테이블)의 차이가 가장 많은 주문
select t1.price, t2.saleprice, t1.price-t2.saleprice, t2.*
from book t1, orders t2
where t1.bookid = t2.bookid
and t1.price - t2.saleprice = (select max(t3.price-t4.saleprice)
from book t3, orders t4
where t3.bookid - t4.bookid);
--2.(13)도서의 판매액 평균보다 자신의 구매액 평균이 더 높은 고객의 이름
select name, avg(saleprice)
from customer t1, orders t2
where t1.custid = t2.custid
group by name
having avg(saleprice) > (select avg(t3.saleprice) from orders t3);
'SQL' 카테고리의 다른 글
View (0) | 2018.03.08 |
---|---|
2018-03-07 SQL (0) | 2018.03.07 |
SQL 연습문제 답 (0) | 2018.03.06 |
[SQL] DDL, DML이란? (0) | 2018.03.05 |
Oracle SQL (0) | 2018.02.12 |
댓글