AVG(Transact-SQL)
그룹에 속한 값의 평균을 반환합니다. Null 값은 무시됩니다. OVER 절이 뒤에 올 수도 있습니다.
구문
AVG ( [ ALL | DISTINCT ] expression )
인수
- ALL
모든 값에 집계 함수를 적용합니다. 기본값입니다.
- DISTINCT
값이 중복될 경우 횟수에 관계 없이 무시하고 고유한 값에 대해서만 AVG를 수행하도록 지정합니다.
- expression
bit 데이터 형식을 제외한 정확한 숫자 또는 근사 숫자 데이터 형식 범주의 식입니다. 집계 함수와 하위 쿼리는 허용되지 않습니다.
반환 유형
반환 유형은 expression 계산 결과 형식에 의해 결정됩니다.
식 결과 | 반환 유형 |
---|---|
integer 범주 |
int |
decimal 범주(p, s) |
decimal(38, s) 나누기 decimal(10, 0) |
money 및 smallmoney 범주 |
money |
float 및 real 범주 |
float |
중요: |
---|
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)