24.06.12
#select 문 형식
select 칼럼(들). [집계함수(들)]
from 테이블(들)
[where 조건식] >> 조회하고자 하는 레코드 조건식
[group by 컬럼(들)] >> 특정 컬럼 값 종류별로 집계함수 나타낼때 사용
[order by 컬럼(들)] >> 조회한 컬럼 특정 기준으로 정렬할때
ex) 직책 별 사원수, 평균급여액 출력 (사원수가 높은순으로 출력)
select count(*) cnt, avg(salary) avg from emp group by job order by count(*) desc;
>> select job, count(*) cnt, avg(salary) avg from emp group by job order by cnt desc; >> 앞에 job 써줘야 알아볼수있음
ex) 부서명 별 사원수, 총급여액, 평균급여액 출력 (총급여액 높은순으로 출력)
select dname, count(*) cnt, sum(salary) sum, avg(salary) avg from emp e, dept d where e.dno = d.dno group by dname order by sum desc;
ex) 개발팀에 근무하는 직원들의 직책별 평균급여액 출력 (평균급여액 높은순으로 출력)
select job, avg(salary) avg from emp e, dept d where e.dno = d.dno and dname like '%개발%' group by job order by avg desc;
ex) '고려고려' 나 '조선실록'의 도서명 별로 판매건수 출력 (단 판매건수 높은 순으로 출력)
select bookname, count(*) from orders o, book b where o.bookid = b.bookid and publisher in ('고려고려', '조선실록') group by bookname order by count(*) desc;
위의 결과에서 판매건수가 2개이상인 것만 조회하고 싶을 때? >> having 사용
#having
group by 절에 나타난 결과에 대해 조건식 줄때
select bookname, count(*)
from book b, orders o
where b.bookid = o.bookid and
publisher in ('고려고려', '조선실록')
group by bookname
having count(*) >= 2
order by count(*) desc;
#데이터 조회
select 칼럼(들)
from 테이블(들)
[where 조건식]
[group by 컬럼(들)]
[having 조건식]
[order by 컬럼(들)]
ex) 고객명 별로 구매건수, 총구매금액 출력
(총 구매금액이 10000원 이상인 고객만 출력 / 총 구매금액 높은 순으로 출력)
select name, count(*), sum(saleprice) from customer c, orders o where c.custid = o.custid group by name having sum(saleprice) >=10000 order by sum(saleprice) desc;
ex) '판교'나 '종각' 근무 직원들의 부서명별로 근무하는 직원 수, 총급여액, 평균급여액 출력
(직원수 2명 이상인 부서만 출력 / 총 급여액 높은 순으로 출력 / 총급여액 동일 시 평균 급여액 순으로 출력)
select dname, count(*), sum(salary), avg(salary) from emp e, dept d where e.dno = d.dno and dloc in ('판교','종각') group by dname having count(*) >=2 order by sum(salary) desc, avg(salary) desc;
ex) '전쟁' 관련 도서에 대해 도서명 별로 판매건수 출력
(판매건수 높은 순으로 출력)
select bookname, count(*) from book b, orders o where b.bookid = o.bookid and bookname like '%전쟁%' group by bookname order by count(*) desc;