-
2020.11.30 시험문제 풀이 (sql 질의 작성)기타/과제 2020. 11. 27. 14:44
기본 테이블
BOOK - -BOOKID, BOOKNAME, PUBLISHER, PRICE
CUSTOMER - CUSTID, NAME, ADDRESS
ORDERS - ORDERSID, CUSTID, BOOKID, SALEPRICE, ORDERDATE
//1-1 도서번호가 1인 도서의 이름
더보기SELECT BOOKNAME FROM BOOK WHERE BOOKID = 1;
//1-2 가격이 20,000원 이상인 도서의 이름
더보기SELECT BOOKNAME FROM BOOK
WHERE price > 20000
ORDER BY BOOKNAME;//1-3 박지성의 총 구매액 (1번 회원)
더보기
SELECT SUM(SALEPRICE) FROM orders WHERE CUSTID = 1;//1-4 박지성이 구매한 도서의 수
더보기SELECT COUNT(*) FROM orders WHERE CUSTID = 1;
//1-5 박지성이 구매한 도서 출판사의 수
더보기SELECT COUNT(*) PUBLISHER
FROM BOOK, ORDERS
WHERE book.BOOKID = orders.BOOKID
AND ORDERS.CUSTID = 1;//1-6 박지성이 구매한 도서의 이름, 가격, 정가와 판매가격의 차이
더보기SELECT book.BOOKNAME, orders.SALEPRICE, book.PRICE-orders.SALEPRICE
FROM BOOK, ORDERS
WHERE book.BOOKID = orders.BOOKID
AND ORDERS.CUSTID = 1;//1-7 박지성이 구매하지 않은 도서의 이름
더보기SELECT DISTINCT book.BOOKNAME
FROM BOOK, ORDERS
WHERE book.BOOKID = orders.BOOKID
AND ORDERS.CUSTID NOT IN (1);//2-1 마당서점 도서의 총 개수
더보기SELECT COUNT(BOOKID) FROM BOOK;
//2-2 마당서점에 도서를 출고하는 출판사의 총 개수
더보기SELECT COUNT(DISTINCT publisher) FROM BOOK;
//2-3 모든 고객의 이름, 주소
더보기SELECT NAME, ADDRESS FROM customer
ORDER BY NAME;//2-4 2014년 7월 4일~7월 7일 사이에 주문받은 도서의 주문번호
더보기SELECT BOOKID FROM orders
WHERE orderdate BETWEEN '2014/07/04' AND '2014/07/07'
ORDER BY BOOKID;//2-5 2014년 7월 4일~7월 7일 사이에 주문받은 도서를 제외한 도서의 주문번호
더보기SELECT DISTINCT BOOKID
FROM orders
WHERE orderdate NOT BETWEEN '2014/07/04' AND '2014/07/07'
ORDER BY BOOKID;//2-6 성이 ‘김’ 씨인 고객의 이름과 주소
더보기SELECT name, ADDRESS
FROM customer
WHERE NAME LIKE '김%' ;//2-7 성이 ‘김’ 씨이고 이름이 ‘아’로 끝나는 고객의 이름과 주소
더보기SELECT NAME, ADDRESS
FROM customer
WHERE NAME LIKE '김__아%' ;//2-8 주문하지 않은 고객의 이름 (부속질의 사용)
더보기SELECT customer.NAME
FROM CUSTOMER
WHERE custid NOT IN (
SELECT DISTINCT orders.custid
FROM ORDERS
);//2-9. 주문 금액의 총액과 주문의 평균금액
더보기
SELECT sum(orders.SALEPRICE), avg(orders.SALEPRICE)
FROM ORDERS;//2-10 고객의 이름과 고객별 구매액
더보기
SELECT DISTINCT customer.name, orders.SALEPRICE
FROM CUSTOMER, ORDERS
WHERE CUSTOMER.CUSTID = ORDERS.CUSTID
ORDER BY NAME;//2-11 고객의 이름과 고객이 구매한 도서 목록
더보기
SELECT DISTINCT customer.name, book.BOOKNAME
FROM CUSTOMER, book, ORDERS
WHERE CUSTOMER.CUSTID = ORDERS.CUSTID
AND book.BOOKID = orders.BOOKID
ORDER BY NAME;//2-12 도서 가격(prcie)와 판매가격(saleprice)의 차이가 가장 많은 주문
더보기
SELECT *
FROM book, ORDERS
WHERE book.BOOKID = orders.BOOKID
AND book.PRICE-orders.SALEPRICE = (
SELECT max(book.PRICE-orders.SALEPRICE)
FROM book, ORDERS
WHERE book.BOOKID = orders.BOOKID
);//2-13 도서의 판매액 평균보다 자신의 구매액 평균이 더 높은 고객 이름
더보기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
);//3-1 박지성이 구매한 도서의 출판사와 같은 출판사에서 도서를 구한 고객의 이름
더보기SELECT DISTINCT CUSTOMER.NAME
FROM CUSTOMER, ORDERS, BOOK
WHERE CUSTOMER.CUSTID = ORDERS.CUSTIDAND BOOK.BOOKID = ORDERS.BOOKID
AND NAME NOT IN ('박지성')AND BOOK.PUBLISHER IN (
SELECT DISTINCT BOOK.PUBLISHER
FROM BOOK, ORDERS
WHERE BOOK.BOOKID = ORDERS.BOOKID
AND ORDERS.CUSTID = 1
);
//3-2 두 개 이상의 서로다른 출판사에서 도서를 구매한 고객의 이름
더보기SELECT DISTINCT CUSTOMER.NAME
FROM CUSTOMER, ORDERS, BOOK
WHERE CUSTOMER.CUSTID =ORDERS.CUSTID
AND BOOK.BOOKID = ORDERS.BOOKID
GROUP BY CUSTOMER.NAME
HAVING COUNT(DISTINCT PUBLISHER) >= 2;
//3-3 전체 고객의 30% 이상 구매한 도서
// 퍼센트 구하는 공식 (전체값*구할퍼센트/100)더보기SELECT DISTINCT book.BOOKNAME
FROM book, ORDERS
WHERE ORDERS.BOOKID = BOOK.BOOKID
GROUP BY BOOKNAME
HAVING COUNT() >= (SELECT count() custid FROM customer)*30/100;'기타 > 과제' 카테고리의 다른 글
TCP / UDP 통신에 관하여 (0) 2021.01.18 리눅스 명령어 치트시트 정리 (0) 2021.01.15 JDBC를 이용해 테이블 만들기 과제2 (0) 2020.11.24 추상클래스와 인터페이스의 정의 및 활용법 (0) 2020.11.24 JDBC를 이용해 Oracle 연동 연습예제 (0) 2020.11.20