[데이터베이스 - 기본 SQL문 실습]

yedy·2023년 5월 11일
0

[mySQL]

목록 보기
6/16
post-thumbnail

✔️ 연습문제

🔺 박지성이 구매한 도서의 출판사 수

SELECT COUNT(DISTINCT publisher) FROM Book
	WHERE bookid IN (SELECT bookid FROM Orders 
		WHERE custid = (SELECT custid FROM Customer 
			WHERE name = '박지성'));
SELECT COUNT(publisher) FROM Book JOIN Orders
ON Orders.bookid = Book.bookid
WHERE custid = (SELECT custid FROM Customer WHERE name = '박지성');

🔺 박지성이 구매한 도서의 이름, 가격, 정가와 판매가격의 차이

SELECT bookname, price,ABS(price-saleprice) as "정가와 판매가의 차이"
FROM Book JOIN Orders
ON Orders.bookid = Book.bookid
WHERE custid = (SELECT custid FROM Customer WHERE name = '박지성');

🔺 박지성이 구매하지 않은 도서의 이름

SELECT bookname FROM Book
	WHERE bookid NOT IN(SELECT bookid FROM Orders 
		WHERE custid = (SELECT custid FROM Customer 
			WHERE name = '박지성'));

🔺 주문하지 않은 고객의 이름

//부속질의 사용
SELECT name FROM Customer WHERE custid NOT IN (
	SELECT DISTINCT custid FROM Orders);
//조인
SELECT name FROM Customer LEFT JOIN Orders
ON Customer.custid = Orders.custid
WHERE Orders.custid IS NULL;

🔺 주문 금액의 총액과 주문의 평균 금액

SELECT SUM(saleprice) AS "총액", FORMAT(AVG(saleprice),2) AS "평균 금액" 
	FROM Orders;

🔺 고객의 이름과 고객별 구매액

SELECT name, SUM(saleprice) FROM Customer JOIN Orders 
	ON Customer.custid = Orders.custid
    GROUP BY name;

🔺 고객의 이름과 고객이 구매한 도서 목록

SELECT name, GROUP_CONCAT(bookname), SUM(saleprice)
FROM Book RIGHT JOIN Orders
ON Book.bookid = Orders.bookid RIGHT JOIN Customer
ON Orders.custid = Customer.custid
GROUP BY name;

🔺 도서의 가격(Book 테이블)과 판매가격(Orders 테이블)의 차이가 가장 많은 주문

SELECT bookname,price, MAX(price-saleprice) AS 차액
FROM Book JOIN Orders
ON Orders.bookid = Book.bookid
ORDER BY 차액 DESC
LIMIT 1;

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

SELECT name FROM Customer
LEFT JOIN Orders ON Customer.custid=Orders.custid
GROUP BY Orders.custid
HAVING AVG(Orders.saleprice) > (SELECT AVG(saleprice) FROM Orders);

🔺 박지성이 구매한 도서의 출판사와 같은 출판사에서 도서를 구매한 고객의 이름

SELECT name FROM Customer JOIN Orders
	ON Customer.custid = Orders.custid JOIN Book
    ON Orders.bookid = Book.bookid
    
	WHERE publisher IN (SELECT publisher FROM Book
		WHERE bookid IN (SELECT bookid FROM Orders
			WHERE custid = (SELECT custid FROM Customer 
				WHERE name = '박지성')))
AND customer.name <> "박지성";

🔺

🔺

🔺

profile
공주 개발자

0개의 댓글