다음을 통해 공유


COUNT_BIG(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics분석 플랫폼 시스템(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 웨어하우스Microsoft Fabric의 SQL 데이터베이스

이 함수는 그룹에 있는 항목의 수를 반환합니다. COUNT_BIGCOUNT 함수처럼 작동합니다. 이러한 함수는 해당 반환 값의 데이터 형식만이 다릅니다. COUNT_BIG은 항상 bigint 데이터 형식 값을 반환합니다. COUNT은 항상 int 데이터 형식 값을 반환합니다.

Transact-SQL 구문 표기 규칙

구문

집계 함수 구문:

COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )

분석 함수 구문:

COUNT_BIG ( { [ ALL ] expression | * } ) OVER ( [ <partition_by_clause> ] )

인수

ALL

모든 값에 집계 함수를 적용합니다. ALL 는 기본값으로 사용됩니다.

DISTINCT

Null이 아닌 고유한 값의 수를 반환하는 것을 COUNT_BIG 지정합니다.

expression

모든 형식의 입니다. COUNT_BIG은 집계 함수 또는 하위 쿼리를 지원하지 않습니다.

*

COUNT_BIG이 반환할 총 테이블 행 개수를 결정하는 모든 행을 계산해야 한다고 지정합니다. COUNT_BIG(*) 는 매개 변수를 사용하지 않으며 DISTINCT. COUNT_BIG(*)은 특정 열에 대한 정보를 사용하지 않도록 정의되어 있으므로 expression 매개 변수가 필요하지 않습니다. COUNT_BIG(*)은 지정한 테이블에서 행의 수를 반환하고 중복 행을 유지합니다. Null 값을 포함하는 행을 포함하여 각 행을 개별적으로 계산합니다.

오버 ([ partition_by_clause ] [ order_by_clause ] )

partition_by_clauseFROM 절이 생성한 결과 집합을 COUNT_BIG 함수가 적용되는 파티션으로 나눕니다. partition_by_clause 지정하지 않으면 함수는 쿼리 결과 집합의 모든 행을 단일 그룹으로 처리합니다. order_by_clause는 작업의 논리적 순서를 결정합니다. 자세한 내용은 OVER 절을 참조하세요.

반환 형식

bigint

설명

COUNT_BIG(*) 는 그룹의 항목 수를 반환합니다. 이 개수에는 값과 중복이 포함 NULL 됩니다.

COUNT_BIG(ALL <expression>) 는 그룹의 각 행에 대한 식을 계산하고 null이 아닌 값의 수를 반환합니다.

COUNT_BIG(DISTINCT <expression>) 는 그룹의 각 행에 대한 식을 계산하고 Null이 아닌 고유한 값의 수를 반환합니다.

결정적 및 비결정적 사용

COUNT_BIG는 and ORDER BY없이OVER 사용할 때 결정적 함수입니다.

COUNT_BIG는 and 절과 ORDER BY함께OVER 사용할 때 비결정적입니다.

사용 OVERORDER BY 결정론적인
아니오 Yes
Yes 아니오

자세한 내용은 결정적 함수와 비결정적 함수를 참조하세요.

예제

이 문서의 코드 샘플은 AdventureWorks2025 또는 AdventureWorksDW2025 샘플 데이터베이스를 사용합니다. 이 데이터베이스는 Microsoft SQL Server 샘플 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다.

A. COUNT_BIG 및 DISTINCT 사용

다음은 직원이 보유할 수 있는 HumanResources.Employee 테이블의 여러 직위 수를 반환하는 예제입니다.

SELECT COUNT_BIG(DISTINCT JobTitle)
FROM HumanResources.Employee;
GO

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

-----------
67

B. COUNT_BIG(*) 사용

이 예제에서는 테이블의 총 직원 수를 반환합니다 HumanResources.Employee .

SELECT COUNT_BIG(*)
FROM HumanResources.Employee;
GO

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

-----------
290

C. 다른 집계와 함께 COUNT_BIG(*) 사용

이 예제에서는 COUNT_BIG(*)SELECT 목록의 다른 집계 함수로 작동하는 것을 보여줍니다.

SELECT COUNT_BIG(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO

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

------ ---------------------
14     3472.1428

D. OVER 절 사용

이 예제에서는 절과 함께 , , 및 함수를 사용하여 MIN테이블의 OVER 각 부서에 HumanResources.Department 대해 집계된 값을 반환합니다.COUNT_BIGAVGMAX

SELECT DISTINCT d.Name,
                MIN(eph.Rate) OVER (PARTITION BY edh.DepartmentID) AS MinSalary,
                MAX(eph.Rate) OVER (PARTITION BY edh.DepartmentID) AS MaxSalary,
                AVG(eph.Rate) OVER (PARTITION BY edh.DepartmentID) AS AvgSalary,
                COUNT_BIG(edh.BusinessEntityID) OVER (PARTITION BY edh.DepartmentID) AS EmployeesPerDept
FROM HumanResources.EmployeePayHistory AS eph
     INNER JOIN HumanResources.EmployeeDepartmentHistory AS edh
         ON eph.BusinessEntityID = edh.BusinessEntityID
     INNER JOIN HumanResources.Department AS d
         ON d.DepartmentID = edh.DepartmentID
WHERE edh.EndDate IS NULL
ORDER BY d.Name;

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

Name                         MinSalary   MaxSalary   AvgSalary   EmployeesPerDept
---------------------------- ----------- ----------- ----------- -----------------
Document Control             10.25       17.7885     14.3884     5
Engineering                  32.6923     63.4615     40.1442     6
Executive                    39.06       125.50      68.3034     4
Facilities and Maintenance   9.25        24.0385     13.0316     7
Finance                      13.4615     43.2692     23.935      10
Human Resources              13.9423     27.1394     18.0248     6
Information Services         27.4038     50.4808     34.1586     10
Marketing                    13.4615     37.50       18.4318     11
Production                   6.50        84.1346     13.5537     195
Production Control           8.62        24.5192     16.7746     8
Purchasing                   9.86        30.00       18.0202     14
Quality Assurance            10.5769     28.8462     15.4647     6
Research and Development     40.8654     50.4808     43.6731     4
Sales                        23.0769     72.1154     29.9719     18
Shipping and Receiving       9.00        19.2308     10.8718     6
Tool Design                  8.62        29.8462     23.5054     6

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

E. COUNT_BIG 및 DISTINCT 사용

이 예제에서는 특정 회사의 직원이 보유할 수 있는 여러 직함의 수를 반환합니다.

USE ssawPDW;
SELECT COUNT_BIG(DISTINCT Title)
FROM dbo.DimEmployee;

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

-----------
67

F. COUNT_BIG(*) 사용

이 예제에서는 dbo.DimEmployee 테이블에 있는 총 행 수를 반환합니다.

USE ssawPDW;
SELECT COUNT_BIG(*)
FROM dbo.DimEmployee;

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

-------------
296

G. 다른 집계와 함께 COUNT_BIG(*) 사용

이 예제에서는 COUNT_BIG(*)SELECT 목록의 다른 집계 함수와 결합합니다. 그러면 연간 판매 할당량이 $500,000를 초과하는 영업 담당자의 수와 해당 영업 담당자의 평균 영업 할당량을 반환합니다.

USE ssawPDW;
SELECT COUNT_BIG(EmployeeKey) AS TotalCount,
       AVG(SalesAmountQuota) AS [Average Sales Quota]
FROM dbo.FactSalesQuota
WHERE SalesAmountQuota > 500000
      AND CalendarYear = 2001;

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

TotalCount  Average Sales Quota
----------  -------------------
10          683800.0000

H. HAVING에서 COUNT_BIG 사용

이 예제에서는 COUNT_BIG 절과 함께 HAVING를 사용하여 각각 15명 이상의 직원이 있는 회사의 부서를 반환합니다.

USE ssawPDW;
SELECT DepartmentName,
       COUNT_BIG(EmployeeKey) AS EmployeesInDept
FROM dbo.DimEmployee
GROUP BY DepartmentName
HAVING COUNT_BIG(EmployeeKey) > 15;

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

DepartmentName  EmployeesInDept
--------------  ---------------
Sales           18
Production      179

I. OVER에서 COUNT_BIG 사용

이 예제에서는 COUNT_BIG 절과 함께 OVER를 사용하여 지정된 각 판매 주문에 포함된 제품의 수를 반환합니다.

USE ssawPDW;
SELECT DISTINCT COUNT_BIG(ProductKey) OVER (PARTITION BY SalesOrderNumber) AS ProductCount,
                SalesOrderNumber
FROM dbo.FactInternetSales
WHERE SalesOrderNumber IN (N'SO53115', N'SO55981');

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

ProductCount   SalesOrderID
------------   -----------------
3              SO53115
1              SO55981