적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 분석 엔드포인트
Microsoft Fabric의 웨어하우스
Microsoft Fabric의 SQL 데이터베이스
이 함수는 그룹에 있는 항목의 수를 반환합니다.
COUNT_BIG은 COUNT 함수처럼 작동합니다. 이러한 함수는 해당 반환 값의 데이터 형식만이 다릅니다.
COUNT_BIG은 항상 bigint 데이터 형식 값을 반환합니다.
COUNT은 항상 int 데이터 형식 값을 반환합니다.
구문
집계 함수 구문:
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_clause는 FROM 절이 생성한 결과 집합을 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 사용할 때 비결정적입니다.
사용 OVER 및 ORDER 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