프레임워크 SQL 2일차
프레임워크 SQL 2일차
Q1
Q1-5 : 박지성이 구매한 도서의 출판사 수
1
2
3
select count(publisher)
from book, orders
where book.bookid = orders.bookid and orders.custid like 1;
출력 결과
| count(publisher) |
|---|
| 3 |
Q1-6 : 박지성이 구매한 도서의 이름, 가격, 정가와 판매가의 차이
1
2
3
select book.bookname, book.price as 정가, price - saleprice
from book, orders
where book.bookid = orders.bookid and orders.custid like '1';
출력 결과
| bookname | 정가 | price - saleprice |
|---|---|---|
| 축구의 역사 | 7000 | 1000 |
| 축구의 이해 | 22000 | 1000 |
| 축구 아는 여자 | 13000 | 1000 |
Q1-7 : 박지성이 구매하지 않은 도서의 이름
1
select distinct book.bookname as 도서이름 from book, orders where book.bookid = orders.bookid and orders.custid not like '1';
출력 결과
| 도서이름 |
|---|
| 피겨 교본 |
| 배구 단계별 기술 |
| 야구의 추억 |
| 야구를 부탁해 |
| Olympic Champion |
Q2
Q2-8 : 주문하지 않은 고객의 이름 (부속질의 사용)
1
2
3
4
select customer.name as 고객이름
from customer
where custid not in
(select distinct orders.custid from orders);
출력 결과
| 고객이름 |
|---|
| 박세리 |
Q2-9 : 주문금액의 총액과 주문의 평균금액
1
2
select sum(saleprice) as 총액, avg(saleprice) as 평균금액
from orders;
출력 결과
| 총액 | 평균금액 |
|---|---|
| 1180000 | 11800.0000 |
Q2-10 : 고객의 이름과 고객별 구매액
1
2
3
select name as 고객이름, sum(saleprice) as 구매액
from customer cs join orders od on cs.custid = od.custid
group by name;
출력 결과
| 고객이름 | 구매액 |
|---|---|
| 박지성 | 39000 |
| 김연아 | 15000 |
| 김연경 | 31000 |
| 추신수 | 33000 |
Q2-11 : 고객의 이름과 고객이 구매한 도서 목록
1
2
3
4
select name as 고객이름, bookname as 도서이름
from book, customer cs, orders od
where cs.custid = od.custid and book.bookid = od.bookid
order by name, bookname;
출력 결과
| 고객이름 | 도서이름 |
|---|---|
| 김연경 | Olympic Champions |
| 김연경 | 배구 단계별기술 |
| 김연경 | 야구를 부탁해 |
| 김연아 | Olympic Champions |
| 김연아 | 피겨 교본 |
| 박지성 | 축구 아는 여자 |
| 박지성 | 축구의 역사 |
| 박지성 | 축구의 이해 |
| 추신수 | 야구를 부탁해 |
| 추신수 | 야구의 추억 |
Q2-12 : 도서의 가격(Book 테이블)과 판매가격(Orders 테이블)의 차이가 가장 많은 주문
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
price AS 정가,
saleprice AS 판매가격,
price - saleprice AS 차이
FROM
book,
orders
WHERE
book.bookid = orders.bookid
AND book.price - orders.saleprice = (SELECT
MAX(price - saleprice)
FROM
book,
orders
WHERE
book.bookid = orders.bookid)
출력 결과
| 정가 | 판매가격 | 차이 |
|---|---|---|
| 13000 | 7000 | 6000 |
Comment
Ctrl + B로 코드를 깔끔하게 정리해준다!
Q2-13 : 도서의 판매액 평균보다 자신의 구매액 평균이 더 높은 고객의 이름
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
customer.NAME
FROM
CUSTOMER,
ORDERS
WHERE
CUSTOMER.CUSTID = ORDERS.CUSTID
GROUP BY customer.NAME
HAVING AVG(orders.SALEPRICE) > (SELECT
AVG(orders.SALEPRICE)
FROM
ORDERS);
출력 결과
| 고객이름 |
|---|
| 박지성 |
| 추신수 |
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.








