집계는 그룹 작업의 일부로 컬렉션을 스칼라로 압축하는 언어 구문입니다. 엔터티 SQL 집계는 다음 두 가지 형식으로 제공됩니다.
식의 어디에서나 사용할 수 있는 엔터티 SQL 컬렉션 함수입니다. 여기에는 프로젝션에 집계 함수를 사용하고 컬렉션에서 작동하는 조건자를 사용하는 것이 포함됩니다. 컬렉션 함수는 Entity SQL에서 집계를 지정하는 기본 모드입니다.
GROUP BY 절이 있는 쿼리 식의 그룹 집계입니다. Transact-SQL에서와 같이 그룹 집계는 DISTINCT 및 ALL을 집계 입력에 대한 한정자로 허용합니다.
엔터티 SQL은 먼저 식을 컬렉션 함수로 해석하려고 시도하고 식이 SELECT 식의 컨텍스트에 있으면 그룹 집계로 해석합니다.
Entity SQL은 GROUPPARTITION이라는 특수 집계 연산자를 정의합니다. 이 연산자를 사용하면 그룹화된 입력 집합에 대한 참조를 가져올 수 있습니다. 이렇게 하면 그룹 집계 또는 컬렉션 함수 이외의 위치에서 GROUP BY 절의 결과를 사용할 수 있는 고급 그룹화 쿼리를 사용할 수 있습니다.
컬렉션 함수
컬렉션 함수는 컬렉션에서 작동하고 스칼라 값을 반환합니다. 예를 들어 모두orders의 컬렉션인 경우 orders 다음 식을 사용하여 가장 빠른 배송 날짜를 계산할 수 있습니다.
min(select value o.ShipDate from LOB.Orders as o)
그룹 집계
그룹 집계는 GROUP BY 절에 정의된 그룹 결과에 대해 계산됩니다. GROUP BY 절은 데이터를 그룹으로 분할합니다. 결과의 각 그룹에 대해 집계 함수가 적용되고 각 그룹의 요소를 집계 계산에 대한 입력으로 사용하여 별도의 집계가 계산됩니다. GROUP BY 절을 SELECT 식에 사용하는 경우 프로젝션, HAVING 또는 ORDER BY 절에는 그룹화 식 이름, 집계 또는 상수 식만 있을 수 있습니다.
다음 예제에서는 각 제품에 대해 정렬된 평균 수량을 계산합니다.
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
SELECT 식에서 명시적 GROUP BY 절 없이 그룹 집계를 포함할 수 있습니다. 모든 요소는 상수를 기반으로 그룹화 지정의 경우와 동일한 단일 그룹으로 처리됩니다.
select avg(ol.Quantity) from LOB.OrderLines as ol
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
GROUP BY 절에 사용되는 식은 WHERE 절 식에 표시되는 것과 동일한 이름 확인 범위를 사용하여 평가됩니다.