COMPUTE(Transact-SQL)

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

중요 정보중요

이 기능은 다음 버전의 Microsoft SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오. 대신 ROLLUP을 사용하십시오. 자세한 내용은 GROUP BY(Transact-SQL)를 참조하십시오.

항목 링크 아이콘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일 경우에도 SQL Server 데이터베이스 엔진에서는 결과를 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 테이블에서 SubTotal 및 TotalDue 합계의 총합계를 반환하는 방법을 보여 줍니다.

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 테이블에서 SubTotal 및 TotalDue 합계에 대한 판매원 한 명당 합계를 계산하는 방법을 보여 줍니다.

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