AVG(Transact-SQL)

그룹에 속한 값의 평균을 반환합니다. Null 값은 무시됩니다. OVER 절이 뒤에 올 수도 있습니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

AVG ( [ ALL | DISTINCT ] expression ) 

인수

  • ALL
    모든 값에 집계 함수를 적용합니다. 기본값입니다.
  • DISTINCT
    값이 중복될 경우 횟수에 관계 없이 무시하고 고유한 값에 대해서만 AVG를 수행하도록 지정합니다.
  • expression
    bit 데이터 형식을 제외한 정확한 숫자 또는 근사 숫자 데이터 형식 범주의 입니다. 집계 함수와 하위 쿼리는 허용되지 않습니다.

반환 유형

반환 유형은 expression 계산 결과 형식에 의해 결정됩니다.

식 결과 반환 유형

integer 범주

int

decimal 범주(p, s)

decimal(38, s) 나누기 decimal(10, 0)

moneysmallmoney 범주

money

floatreal 범주

float

ms177677.note(ko-kr,SQL.90).gif중요:
CUBE 또는 ROLLUP을 사용할 경우 고유 집계, 예를 들어 AVG(DISTINCT column_name), COUNT(DISTINCT column_name), MAX(DISTINCT column_name), MIN(DISTINCT column_name) 및 SUM(DISTINCT column_name)은 지원되지 않습니다. 이러한 고유 집계를 사용하면 SQL Server 2005 데이터베이스 엔진에서 오류 메시지를 반환하고 쿼리를 취소합니다.

주의

expression이 별칭 데이터 형식이면 반환 유형도 별칭 데이터 형식입니다. 하지만 별칭 데이터 형식의 기본 데이터 형식이 승격되면(예: tinyint에서 int로) 반환 값은 별칭 데이터 형식이 아닌 승격된 데이터 형식입니다.

1. SUM 함수와 AVG 함수를 사용한 계산

다음 예에서는 Adventure Works Cycles의 부사장들이 이용한 평균 휴가 시간과 병가 시간의 합계를 계산합니다. 각 집계 함수는 또한 검색된 모든 행의 요약 값을 계산합니다.

USE AdventureWorks;
GO
SELECT AVG(VacationHours)as 'Average vacation hours', 
    SUM  (SickLeaveHours) as 'Total sick leave hours'
FROM HumanResources.Employee
WHERE Title LIKE 'Vice President%';

결과 집합은 다음과 같습니다.

Average vacation hours       Total sick leave hours 
----------------------       ---------------------- 
25                           97

(1 row(s) affected)

2. GROUP BY 절과 함께 SUM 함수 및 AVG 함수 사용

집계 함수를 GROUP BY 절과 함께 사용하면 전체 테이블이 아니라 각 그룹당 한 개의 값을 생성합니다. 다음 예에서는 각각의 판매 분야에 대한 요약 값을 계산합니다. 각 분야의 영업 사원이 받은 평균 보너스와 분야별 연간 판매량 합계를 요약하여 나열합니다.

USE AdventureWorks;
GO
SELECT TerritoryID, AVG(Bonus)as 'Average bonus', SUM(SalesYTD) 'YTD sales'
FROM Sales.SalesPerson
GROUP BY TerritoryID;
GO

3. AVG 함수에 DISTINCT 사용

다음 예에서는 제품의 평균 정가를 반환합니다.

USE AdventureWorks;
GO
SELECT AVG(DISTINCT ListPrice)
FROM Production.Product;

결과 집합은 다음과 같습니다.

------------------------------
437.4042
(1 row(s) affected)
 

4. DISTINCT 없이 AVG 사용

DISTINCT를 지정하지 않고 AVG 함수를 실행하여 Product 테이블에 있는 모든 제품의 평균 정가를 찾습니다.

USE AdventureWorks;
GO
SELECT AVG(ListPrice)
FROM Production.Product;

결과 집합은 다음과 같습니다.

------------------------------
438.6662
(1 row(s) affected)

참고 항목

참조

집계 함수(Transact-SQL)
OVER 절(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기