COMPUTE(Transact-SQL)

결과 집합의 끝에 추가 요약 열로 표시되는 합계를 생성합니다. COMPUTE 절을 BY와 함께 사용하면 결과 집합에 컨트롤 중단과 부분합을 생성합니다. COMPUTE BY 절과 COMPUTE 절을 같은 쿼리에서 지정할 수 있습니다.

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

구문


[ COMPUTE 
    { { AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM } 
    ( expression ) } [ ,...n ] 
    [ BY expression [ ,...n ] ] 
]

인수

AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM

수행할 집계를 지정합니다. 다음 행 집계 함수를 COMPUTE 절에 사용할 수 있습니다.

행 집계 함수 결과

AVG

숫자 식에 있는 값의 평균

COUNT

선택된 행의 개수

MAX

식에서 가장 큰 값

MIN

식에서 가장 작은 값

STDEV

식의 모든 값에 대한 통계적 표준 편차

STDEVP

식에 있는 모든 값의 모집단에 대한 통계적 표준 편차

SUM

숫자 식의 값에 대한 합계

VAR

식의 모든 값에 대한 통계적 분산

VARP

식에 있는 모든 값의 모집단에 대한 통계적 분산

COUNT(*)에 상응하는 함수는 없습니다. GROUP BY 및 COUNT(*)에서 생성한 요약 정보를 보려면 COMPUTE 절을 BY 없이 사용하십시오.

이들 함수에서는 Null 값을 무시합니다.

행 집계 함수를 COMPUTE 절과 함께 지정할 경우에는 행 집계 함수에서 DISTINCT 키워드가 허용되지 않습니다.

정수 데이터를 더하거나 평균을 계산할 때는 열의 데이터 형식이 smallint 또는 tinyint일 경우에도 Microsoft SQL Server 2005 데이터베이스 엔진 에서는 결과를 int 값으로 취급합니다. 가산 또는 평균 데이터의 반환 형식에 대한 자세한 내용은 SUM(Transact-SQL)AVG(Transact-SQL)를 참조하십시오.

[!참고] ODBC 및 DB-Library 프로그램에서 오버플로 오류의 가능성을 줄이려면 평균 또는 합계 결과를 위한 모든 변수를 int 데이터 형식으로 선언하십시오.

expression

계산이 수행되는 열 이름 등과 같은 식(Transact-SQL)입니다. expression은 선택 목록에 표시되어야 하고 선택 목록 내의 식 중 하나와 똑같이 지정되어야 합니다. 선택 목록에서 지정된 열 별칭은 expression 내에서 사용할 수 없습니다

[!참고] COMPUTE나 COMPUTE BY 절에는 ntext, text, image 데이터 형식을 지정할 수 없습니다.

BY expression

결과 집합에서 컨트롤 중단과 부분합를 생성합니다. expression은 연결된 ORDER BY 절에 있는 order_by_expression과 똑같은 복사본입니다. 일반적으로 expression은 열 이름 또는 열 별칭입니다. 여러 개의 식을 지정할 수 있습니다. BY 다음에 여러 개의 식을 나열하면 한 그룹을 하위 그룹으로 나누고 그룹의 각 수준에 집계 함수를 적용합니다.

COMPUTE BY를 사용하면 ORDER BY 절도 지정해야 합니다. 식은 ORDER BY 절 다음에 나열된 식과 동일하거나 하위 집합이어야 하고 순서가 같아야 합니다. 예를 들어 ORDER BY 절이 ORDER BY a, b, c인 경우 COMPUTE 절은 다음 중 하나 또는 모두일 수 있습니다.

COMPUTE BY a, b, c
COMPUTE BY a, b
COMPUTE BY a

[!참고] COMPUTE 절이 있는 SELECT 문에서 선택 목록에 있는 열의 순서는 COMPUTE 절에 있는 집계 함수의 순서보다 우선합니다. ODBC 및 DB-Library 프로그래머는 집계 함수 결과를 올바른 위치에 두기 위해 이 순서의 요구 사항을 알고 있어야 합니다.

COMPUTE 절을 포함하는 문은 테이블을 생성하고 그 요약 결과를 데이터베이스에 저장하지 않기 때문에 SELECT INTO 문에서 COMPUTE 절을 사용할 수 없습니다. 따라서 COMPUTE에서 생성한 계산 결과는 SELECT INTO 문으로 만든 새 테이블에 나타나지 않습니다.

SELECT 문이 DECLARE CURSOR 문의 일부일 경우에는 COMPUTE 절을 사용할 수 없습니다.

1. 쿼리에서 COMPUTE를 사용하여 합계 반환

다음 예에서는 SELECT 문에서 단순한 COMPUTE 절을 사용하여 SalesOrderHeader 테이블에서 SubTotalTotalDue 합계의 총합계를 반환하는 방법을 보여 줍니다.

USE AdventureWorks;
GO
SELECT CustomerID, OrderDate, SubTotal, TotalDue
FROM Sales.SalesOrderHeader
WHERE SalesPersonID = 35
ORDER BY OrderDate 
COMPUTE SUM(SubTotal), SUM(TotalDue);

2. 쿼리에서 COMPUTE를 사용하여 합계 반환

다음 예에서는 SELECT 문에 단순한 COMPUTE 절을 사용하여 SalesOrderHeader 테이블에서 SubTotalTotalDue 합계에 대한 판매원 한 명당 합계를 계산하는 방법을 보여 줍니다.

USE AdventureWorks;
GO
SELECT SalesPersonID, CustomerID, OrderDate, SubTotal, TotalDue
FROM Sales.SalesOrderHeader
ORDER BY SalesPersonID, OrderDate 
COMPUTE SUM(SubTotal), SUM(TotalDue) BY SalesPersonID;

참고 항목

참조

SELECT(Transact-SQL)
ORDER BY 절(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기