반응형
use madangdb;
select * from booktbl;
select * from customertbl;
select * from orderstbl;
-- ①가격이 20,000원 미만인 도서를 검색
select price from booktbl where price < 20000;
-- ②가격이 10,000원 이상 20,000 이하인 도서를 검색
select price from booktbl where price <= 20000 and price >=10000;
select price from booktbl where price between 10000 and 20000;
-- ③출판사가 ‘굿스포츠’ 혹은 ‘대한미디어’인 도서를 검색
select publisher from booktbl where publisher = '대한미디어';
select publisher from booktbl where publisher in( '대한미디어', '굿스포츠');
-- ④출판사가 ‘굿스포츠’ 혹은 ‘대한미디어’가 아닌 도서를 검색
select publisher from booktbl where publisher not in( '대한미디어', '굿스포츠');
-- ⑤‘축구의 역사’를 출간한 출판사를 검색
select bookname, publisher from booktbl where bookname ='축구의 역사';
-- ⑥도서이름에 ‘축구’가 포함된 출판사를 검색
select bookname, publisher from booktbl where bookname like '축구%';
-- ⑦도서이름이 여섯글자인 도서를 검색, 프로그래밍에서는 문자열로 인식할 것
select bookname from booktbl where bookname like '______' ;
-- ⑧도서이름의 왼쪽 두 번째 위치에 ‘구’라는 문자열을 갖는 도서를 검색
select bookname from booktbl where bookname like '_구%';
-- ⑨축구에 관한 도서 중 가격이 20,000원 이상인 도서를 검색
select bookname , price from booktbl where bookname like '축구%' and price >=2000;
-- ⑩야구에 관한 책을 모두 구입하려면 필요한 금액을 계산
-- 조금있다가 질문하기 왜 bookname이 섞이면 안되는 것인가
select sum(price) from booktbl where bookname like '야구%';
-- ⑪도서를 가격순으로 검색하고, 가격이 같으면 이름순으로 검색
select bookname, price from booktbl order by price, bookname;
-- ⑫도서를 가격의 내림차순으로 검색하고 만약 가격이 같다면 출판사의 오름차순으로 검색
select bookname, price from booktbl order by price desc , publisher;
-- ⑭ 고객이 주문한 도서의 총 판매액 조회
select sum(saleprice) from orderstbl ;
-- ⑮ 2번 김연아 고객이 주문한 도서의 총 판매액 조회
select sum(saleprice) from orderstbl where cusid = 2;
-- 16) 고객이 주문한 도서의 총 판매액, 평균값, 최저가, 최고가 조회
select cusid, sum(saleprice), avg(saleprice), min(saleprice), max(saleprice)
from orderstbl group by cusid;
-- 17) 마당서점의 도서 판매 건수 조회
select count(*) from orderstbl;
-- 만약에 특정 기준으로 행의 개수를 세고 싶다면??
select count(*) from orderstbl group by cusid;
-- 18) 고객별로 주문한 도서의 총 수량과 총 판매액 조회
select count(*), sum(saleprice) from orderstbl group by cusid;
-- 19) 가격이 8,000원 이상인 도서를 구매한 고객에 대하여 고객별 주문 도서의 총 수량을 구하시오. 단, 두 권 이상 구매한 고객만 조회
select cusid, count(*) from orderstbl where saleprice>= 8000 group by cusid
having count(*) >=2;
count(*)는 group by로 기준을 정해주면 기준별로 count(*)가 나온다
order by는 group by의 차이점은??
기준으로 정렬하냐, 기준으로 그룹화하냐의 차이였던 것 같습니다.
그리고, 이거는 중요한데 SQL 처리문 순서도 알아두면 좋을 것 같습니다.
1.slect, 2. from 3. where, 4. group by, 5. having, 6.order by
반응형