* 실습은 앞의 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 |