CS/데이터베이스

SQL 실습(5) 중첩된 집계함수 에러, 인라인뷰 서브쿼리 에러

hyomee2 2024. 7. 22. 20:59

* 실습은 앞의 SQL(2) 게시물에서 이용한 데이터베이스를 이용해 진행했다.

 

# 문제 1. 부서별 직원 급여의 총합 중 가장 큰 액수를 출력하세요.

 

아래는 내가 처음 작성한 코드이다.

SELECT MAX(SUM(a.salary))
FROM employee a
	JOIN department b ON a.dept_code = b.dept_id
GROUP BY b.dept_title;

 

이 코드를 실행하면 에러가 뜨는데,

그 이유는 MAX(SUM(a.salary))가 중첩된 집계 함수이기 때문이다.

SQL은 일반적으로 하나의 집계 함수 안에 또 다른집계 함수를 사용할 수 없다.

따라서 서브쿼리를 이용해서 먼저 각 부서별 급여 총합을 계산하고, MAX()로 최댓값을 찾아야 한다.

 

 

그래서 수정해 본 코드다.

SELECT MAX(sal_sum)
FROM (SELECT dept_code, SUM(salary) AS sal_sum
		FROM employee
		WHERE dept_code IS NOT NULL
		GROUP BY dept_code
)

 

 

 

근데 또 에러가 떴다!!

그 이유는, 지금 인라인 뷰를 이용했는데, 인라인뷰를 이용하면 별칭을 이용하지 않더라도 별칭을 꼭 지정해주어야 한다고 한다.

그래서 결과적으로 아래와 같이 코드를 수정할 수 있다.

SELECT MAX(sal_sum)
FROM (SELECT dept_code, SUM(salary) AS sal_sum
		FROM employee
		WHERE dept_code IS NOT NULL
		GROUP BY dept_code
) AS tbl_dept_sal;

 

'CS > 데이터베이스' 카테고리의 다른 글

SQL(7) 문자열 관련 내장 함수  (0) 2024.07.31
SQL 실습(6)  (1) 2024.07.22
SQL 실습(4)  (1) 2024.07.21
SQL 실습(3)  (0) 2024.07.21
SQL(6) 제약 조건  (0) 2024.07.21