본문 바로가기
SQL/모두의SQL

4장 함수 : 03 그룹함수 COUNT , SUM, AVG, MIN,MAX, GROUP BY, HAVING

by sj0020 2021. 7. 17.

그룹 함수 ( = 집계 함수)는 단일 행 함수와 달리 여러 행에 대해 함수가 적용되어 하나의 결과를 나타내는 함수.  

 

COUNT  :  null 행도 셈을 유의

SELECT SUM(salary) 합,
    AVG(salary) AS 평균,
    ROUND(SUM(salary) / COUNT(salary),2) AS 계산평균

FROM employees

null 값은 어떻게 되는가 ..? count 는 null 값도 친다는데 ,  그럼 avg 함수를 썼을 때랑  count 써서 직접 계산했을 때랑 값이 다르게 나올 수도 있는가?

 

이렇다고 한다 . 

AVG 함수는 null 값을 제외하고 연산하는데, null 값을 포함해서 평균을 계산해야 하는 경우에는 NVL 함수를 사용하여 AVG(NVL(salary, 0)) 형태로 null 값을 치환해야 정확한 값이 계산됨

 

이렇다면 두 값이 같겠네 .

 


GROUP BY


HAVING

 

SELECT job_id,
    SUM(salary) 직무별급여합,
    AVG(salary) 직무별급여평균

FROM employees
WHERE employee_id >=10

GROUP BY job_id
HAVING 직무별급여합 > 30000
ORDER BY 직무별급여합 desc,  직무별급여평균

저 한글로 되어있는 부분을 함수로 바꿔주면 에러없이 잘 뜬다 . 

SELECT job_id,
    SUM(salary) 직무별급여합,
    AVG(salary) 직무별급여평균

FROM employees
WHERE employee_id >=10

GROUP BY job_id
HAVING SUM(salary) > 30000
ORDER BY SUM(salary) desc,  직무별급여평균