728x90

AVG() 함수란 ❓

AVG() 함수는 집계함수의 종류로서, 숫자 값, 행, 열 또는 셀 그룹의 평균을 반환하는 함수입니다.

SELECT AVG(column)
FROM TABLE;

 

위와 같이 AVG() 인자에 평균을 구하고 싶은 데이터를 넣으면 됩니다.

 

SELECT  ProductName,AVG(Price) AS Price
FROM Products
GROUP BY ProductName;

 

 

이 때 주의해야 할 점이 있습니다.

바로 NULL 값이 있는 경우인데, NULL 값이 있으면 오류가 발생할 수 있습니다. 그렇기 때문에 NULL값이 있는 경우  NVL() 함수, NVL2NULLIF 등 NULL 값을 처리할 수 있는 함수를 사용해야 합니다.

 

SELECT  ProductName,AVG(NVL(Price,0)) AS Price
FROM Products
GROUP BY ProductName;

 

위 왕같이 NVL() 함수를 이용해서 NULL 값0으로 치환을 해줘야지 오류가 발생하지 않습니다.

 


 

AVG() 함수를 활용하다 보면 위 결과와 같이 소수점을 처리해야 할 경우가 생기게 됩니다.

 

그렇기 때문에 보통 소수점을 반올림하거나 없애야 하는 경우가 자주 발생하기 때문에 AVG() 함수와 같이 사용하는 함수가 바로 ROUND() 함수입니다.

 

ROUND() 함수란❓

ROUND("값", "자리수")
SELECT round(3.2453) FROM dual; -- 3
SELECT round(3.876) FROM dual; -- 4
 
SELECT round(5.1830,0) FROM dual; -- 5, 첫째 자리에서 반올림
 
SELECT round(5.1830,1) FROM dual; -- 5.2
 
SELECT round(5.1830,2) FROM dual; -- 5.18, 셋째 자리에서 반올림
SELECT round(5.189,2) FROM dual; -- 5.19
 
SELECT round(5.1830,3) FROM dual; -- 5.183, 넷째 자리에서 반올림

 

 

위와 같이 반올림하고자 하는 값을 앞에 적고, 반올림할 위치를 뒤에 적어주면 됩니다.

 

만약 "자릿수"를 생략한다면 소수점 첫째 자리에서 반올림을 하게 됩니다.

 


정수 반올림

SELECT round(57.1830,-1) FROM dual; -- 60
SELECT round(54.1830,-1) FROM dual; -- 50

SELECT round(52154.1830,-3) FROM dual; -- 52,000

올림(CEIL)

SELECT CEIL (422.7) FROM dual; -- 423
SELECT CEIL(1.2) FROM dual; -- 2

내림(FLOOR)

SELECT CEIL (422.7) FROM dual; -- 422
SELECT CEIL(1.2) FROM dual; -- 1

버림(TRUNC)

SELECT TRUNC(2.12) FROM dual; --2
 SELECT TRUNC(1.12345,1) FROM dual; --1.1
 SELECT TRUNC(1.12345,2) FROM dual; --1.12
 SELECT TRUNC(1.12345,3) FROM dual; -- 1.123

 

바꾸고자 하는 값을 앞에, 버릴 위치를 뒤에 넣어주면 되며, 아무것도 적지 않는다면 TRUNC(N,0)과 같은 의미입니다.