본문 바로가기

컴퓨터 지식/Database

데이터베이스 SQL 예제 1

데이터베이스에서 SQL 쿼리문을 잘 작성하는 것은 매우 중요한 일입니다.

쿼리문을 효율적으로 작성하지 못하면 소스코드에서 다시 작업을 해줘야 할 수도 있는데

이건 매우 비효율적인 일이기 때문입니다.

그런 의미에서 오늘은 몇가지 SQL문에 대한 예제를 살펴보겠습니다.


우선 사원 테이블(employee)이 있다고 가정하겠습니다.


사원 테이블에서 급여(salary)가 2,000 이상인 사원들의 부서별(dept) 평균을 구하라.

단, 부서별 평균 급여가 3,000 이상이어야 한다.


문제의 요구사항을 보면, 우선 최종적으로 구해야 하는 것은 부서별 평균 금액입니다.

여기서 알 수 있는 것은 SELECT에서 선택되어야 하는 것은 부서(dept)와 급여의 평균 AVG(salary)입니다.

그렇다면 이런 SELECT 문을 작성할 수 있겠네요

SELECT dept, AVG(salary)


다음으로 FROM 절이 와야 합니다. FROM 절은 어디서 데이터를 가져올 것인지 정하는 것이기 때문에

employee 테이블을 선택해야 합니다.

그래서 FROM employee가 됩니다.


이제 조건이 들어가는 WHERE 절을 살펴봐야 하는데요, 우선 급여가 2,000 이상인 사원들의 평균은

구할 수 있을듯합니다. 그냥 WHERE salary >= 2000 이라고 해주면 되기 때문이죠.


그런데 한가지 조건이 더 있습니다. 부서별 평균 급여가 3000이상인 부서만 출력을 해야 합니다.

이런 경우 부서를 묶을 수 있는 GROUP BY가 필요합니다.

GROUP BY 절을 사용하면 부서별(dept)로 묶을 수가 있고, HAVING 절로 조건을 걸 수 있기 때문입니다.

그래서 GROUP BY dept

HAVING AVG(salary) >= 3000 을 사용하면 됩니다.


이상으로 문제에서 요구한 조건을 모두 SQL문으로 기술했습니다. 정리하면


SELECT dept, AVG(salary)

FROM employee

WHERE salary >= 2000

GROUP BY dept

HAVING AVG(salary) >= 3000 


이 되겠지요?