포스트

프레임워크 SQL 2일차

프레임워크 SQL 2일차

Q1

Q1-5 : 박지성이 구매한 도서의 출판사 수

Image Source Code

1
2
3
select count(publisher) 
from book, orders 
where book.bookid = orders.bookid and orders.custid like 1;

출력 결과

count(publisher)
3

Q1-6 : 박지성이 구매한 도서의 이름, 가격, 정가와 판매가의 차이

Image Source Code

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
축구의 역사70001000
축구의 이해220001000
축구 아는 여자130001000

Q1-7 : 박지성이 구매하지 않은 도서의 이름

Image Source Code

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 : 주문하지 않은 고객의 이름 (부속질의 사용)

Image Source Code

1
2
3
4
select customer.name as 고객이름 
from customer 
where custid not in 
(select distinct orders.custid from orders);

출력 결과

고객이름
박세리

Q2-9 : 주문금액의 총액과 주문의 평균금액

Image Source Code

1
2
select sum(saleprice) as 총액, avg(saleprice) as 평균금액
from orders;

출력 결과

총액평균금액
118000011800.0000

Q2-10 : 고객의 이름과 고객별 구매액

Image Source Code

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 : 고객의 이름과 고객이 구매한 도서 목록

Image Source Code

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 테이블)의 차이가 가장 많은 주문

Image Source Code

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)

출력 결과

정가판매가격차이
1300070006000

Comment

Ctrl + B로 코드를 깔끔하게 정리해준다!


Q2-13 : 도서의 판매액 평균보다 자신의 구매액 평균이 더 높은 고객의 이름

Image Source Code

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 라이센스를 따릅니다.