qordpsem 2024. 6. 12. 09:22

#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;