select * from customer;
select * from book;
select * from orders;
--Q1. 도서 전체의 원가 합계는?
SELECT sum(price)
from book;
--group by(그룹명) : 집계함수를 쓰긴 쓸건데 소그룹 별로 집계를 내고 싶을 때 사용
--문법 : group by 속성명
--Q2. 출판사별(그룹핑), 도서 원가 합계(집계함수)
select publisher , sum(price)
from book
group by publisher;
--문제에 나온 정보들이 모두 들어가는 테이블을 찾는다.
--중요한 규칙! select 절 뒤에는 반드시 그룹화한 속성 + 집계함수가 와야한다.
--group by 뒤에 있는 속성은 select절에도 있어야한다.
-Q3. 고객별로 주문한 도서의 수량을 구하시오
select custid 고객번호 , count(Bookid)도서수량
from orders
group by custid;
--custid와 고객번호 사이/count(bookid)와 도서 수량 사이에 as생략됨
--Q4. 고객별로 주문한 도서의 수량과 총 구매액을 구하시오
select custid , count(Bookid), sum(saleprice)
from orders
group by custid;
--select 뒤에 오는 문법 순서정리(꼭 잘 지키기, 숫자 적은건 컴파일할때 순서, 위에서 아래로는 코드 쓸때 순서)
--5. select(필수)
--1. from(필수)
--2. where (선택),테이블 쪼개기
--3. group by (선택),쪼갠걸 다시 그룹화 하기
--4. having(선택), 그룹바이를 필터링
--6. order by(선택), 출력한 결과에 의해서 오더바이
--having : 그룹화 하긴 했는데, 그룹화 한 것을 전부 출력하지 않고 그룹에 대해서 조건을 걸 때 사용
--Q5.고객별로 주문한 도서의 수량을 구하시오(단, 그룹화 한 것에서 3권 이상 주문한 고객만 출력
select custid 고객번호 , count(Bookid)도서수량
from orders
group by custid
having count(bookid) >=3;
--where, having 차이점
--where : 초반에 테이블 전체에 대한 조건
--having : 그룹화 한 것에 대한 조건
--Q. 판매 금액이 만원 이상인 도서에 한해서, 고객별로 주문한 도서의 수량을 구할껀데, 2건 이상을 사간 고객을 구하시오
--풀이 첫번째(판매 금액이 만원 이상인 도서에 한해서)
select *
from orders
where saleprice >= 10000;
--풀이 두번째(판매 금액이 만원 이상인 도서에 한해서, 고객별로 주문한 도서의 수량을 구할껀데)
select custid, count(bookid)
from orders
where saleprice >= 10000
group by custid;
--풀이 세번째(판매 금액이 만원 이상인 도서에 한해서, 고객별로 주문한 도서의 수량을 구할껀데 2건 이상을 사간 고객을 구하시오)
select custid, count(bookid)
from orders
where saleprice >= 10000
group by custid
having count (bookid) >= 2;
--Q6. 책 이름에 '축구'or'피겨'or'골프'or'야구'가 들어간 책들의 출판사 별 책 원가의 평균을 출력하시오.
--단 평균이 7000원 이상인 출판사만 출력하시오 + 평균가격이 높은 순으로 출력하시오)
select publisher, avg(price)
from book
where bookname like '%축구%' or bookname like '%피겨%' or bookname like '%골프%' or bookname like '%야구%'
group by publisher
having avg(price)>= 7000
order by avg(price) desc;
--문자는 like를 적는다
요약
1) group by(그룹명) : 집계함수를 쓰고 소그룹 별로 집계를 내고 싶을 때 사용
--문법 : group by 속성명
2) having :group by로 그룹화 한 것을 전부 출력하지 않고 그룹에 대해서 조건을 걸 때 사용
'데이터베이스 > 오라클' 카테고리의 다른 글
오라클 실습 (외부조인/중첩질의문) (0) | 2023.04.18 |
---|---|
오라클 실습내용 7(조인) (0) | 2023.04.06 |
오라클 실습내용 5(집계함수sum,avg,count...등, order by) (0) | 2023.04.05 |
오라클 실습내용4(중복제거, 비교, in문법,%%문법,between) (0) | 2023.04.04 |
오라클 수업 한 파일 (0) | 2023.04.04 |