반응형
질의 3-1 모든 도서의 이름과 가격을 검색하시오
select bookname, price
form book;
질의 3-2 모든 도서의 도서번호, 도서이름, 출판사, 가격을 검색하시오.
select *
from book;
질의 3-3 도서 테이블에 있는 모든 출판사를 검색하시오. (중복 제거 distinct)
select distinct publisher
from book;
질의 3-4 가격이 20,000원 미만인 도서를 검색하시오.
select bookname, price
from book
where price < 20000;
질의 3-5 가격이 10,000원 이상 20,000 이하인 도서를 검색하시오.
select bookname, price
from book
where price >= 10000 and price <= 20000;
질의 3-6 출판사가 ‘굿스포츠’ 혹은 ‘대한미디어’인 도서를 검색하시오.
select *
from book
where publisher IN ('굿스포츠', '대한미디어');
또는
select *
from book
where publisher not IN ('굿스포츠', '대한미디어');
질의 3-7 ‘축구의 역사’를 출간한 출판사를 검색하시오. (LIKE) - LIKE 연산자는 문자열의 패턴을 검색하는 데 사용
select publisher, bookname
from book
where bookname LIKE '축구의 역사';
질의 3-8 도서이름에 ‘축구’가 포함된 출판사를 검색하시오.
select publisher, bookname
from book
where bookname like '%축구%';
질의 3-9 도서이름의 왼쪽 두 번째 위치에 ‘구’라는 문자열을 갖는 도서를 검색하시오.
select bookname
from book
where bookname like '_구%';
질의 3-10 축구에 관한 도서 중 가격이 20,000원 이상인 도서를 검색하시오.
select bookname
from book
where bookname like '%축구%' and price >= 20000;
질의 3-11 출판사가 ‘굿스포츠’ 혹은 ‘대한미디어’인 도서를 검색하시오.
select bookname, publisher
from book
where publisher in('굿스포츠', '대한미디어');
질의 3-12 도서를 이름순으로 검색하시오. (order by 기본적으로 오름차순, ASC)
select bookname
from book
order by bookname;
질의 3-13 도서를 가격순으로 검색하고, 가격이 같으면 이름순으로 검색하시오.
select bookname, price
from book
order by price, bookname;
질의 3-14 도서를 가격의 내림차순으로 검색하시오. 만약 가격이 같다면 출판사의 오름차순으로 검색하시오 (내림차순 DESC, 오름차순 ASC) @
질의 3-15 고객이 주문한 도서의 총 판매액을 구하시오.
select sum(saleprice)
from orders;
또는
select sum(saleprice) as 총매출
from orders;
질의 3-16 2번 김연아 고객이 주문한 도서의 총 판매액을 구하시오. (SUM)
select sum(saleprice) as 김연아고객매출
from orders
where custid = 2;
질의 3-17 고객이 주문한 도서의 총 판매액, 평균값, 최저가, 최고가를 구하시오. (SUM, AVG, MIN, MAX)
select sum(saleprice) as 총매출, avg(saleprice) as 평균값, min(saleprice) as 최저가, max(saleprice) as 최고가
from orders;
질의 3-18 마당서점의 도서 판매 건수를 구하시오. (COUNT(*))
select count(*)
from orders;
질의 3-19 고객별로 주문한 도서의 총 수량과 총 판매액을 구하시오. (GROUP BY)
select custid, count(*) as 도서수량, sum(saleprice) as 총가격
from orders
group by custid;
질의 3-20 가격이 8,000원 이상인 도서를 구매한 고객에 대하여 고객별 주문 도서의 (GROUP BY, HAVING) @
총 수량을 구하시오. 단, 두 권 이상 구매한 고객만 구한다.
- GROUP BY는 데이터를 그룹핑해서 그 결과를 가져오는 경우 사용한다.
질의 3-21 고객과 고객의 주문에 관한 데이터를 모두 보이시오.
select *
from customer, orders
where customer.custid=orders.custid
질의 3-22 고객과 고객의 주문에 관한 데이터를 고객번호 순으로 정렬하여 보이시오.
select *
from customer c, orders o
where c.custid=o.custid
order by c.custid;
질의 3-23 고객의 이름과 고객이 주문한 도서의 판매가격을 검색하시오.
select *
from customer c, orders o
where c.custid=o.custid
order by c.custid;
질의 3-24 고객별로 주문한 모든 도서의 총 판매액을 구하고, 고객별로 정렬하시오.
select name, sum(saleprice)
from customer c, orders o
where c.custid=o.custid
group by c.name
order by c.name;
질의 3-25 고객의 이름과 고객이 주문한 도서의 이름을 구하시오.
select c.name, b.bookname
from customer c, orders o, book b
where c.custid=o.custid and b.bookid=o.bookid;
질의 3-26 가격이 20,000원인 도서를 주문한 고객의 이름과 도서의 이름을 구하시오.
select name, bookname
from customer c, orders o, book b
where c.custid=o.custid and o.bookid=b.bookid
and price = 20000;
질의 3-27 도서를 구매하지 않은 고객을 포함하여 고객의 이름과 고객이 주문한 도서의
판매가격을 구하시오. LEFT OUTER JOIN @@
select name, saleprice
from customer left outer join orders
on customer.custid=orders.custid;
질의 3-28 가장 비싼 도서의 이름을 보이시오. (MAX) @
select bookname, price
from book
where price = (select max(price)
from book);
질의 3-29 도서를 구매한 적이 있는 고객의 이름을 검색하시오. (IN) @
select name
from customer
where custid in (select custid
from orders);
질의 3-30 대한미디어에서 출판한 도서를 구매한 고객의 이름을 보이시오. (IN) @
select name
from customer
where custid in (select custid
from orders
where bookid in (select bookid
from book
where publisher = '대한미디어'));
질의 3-31 출판사별로 출판사의 평균 도서 가격보다 비싼 도서를 구하시오. (AVG)@
select bookname
from book b1
where b1.price > (select avg(b2.price)
from book b2
where b2.publisher=b1.publisher);
또는
select bookname
from book b1
where b1.price > (select avg(b2.price)
from book b2);
또는
select bookname
from book
where price > (select avg(price)
from book);
(합집합 UNION, 차집합 MINUS, 교집합 INTERSECT)
질의 3-32 도서를 주문하지 않은 고객의 이름을 보이시오. @
select name
from customer
minus
select name
from customer
where custid in(select custid
from orders);
질의 3-33 주문이 있는 고객의 이름과 주소를 보이시오. (EXIXTS)
select name, address
from customer
where exists (select *
from orders
where customer.custid = orders.custid);
또는
select name, address
from customer
where exists (select custid
from orders
where customer.custid = orders.custid);
반응형
'SQL' 카테고리의 다른 글
SQL 질의문(쿼리문) 문제(개인공부) (0) | 2023.03.11 |
---|---|
SQL 질의문(쿼리문) 테이블 데이터(개인공부) (0) | 2023.03.11 |