집계 함수(Entity SQL)

집계는 그룹 작업의 일부로 컬렉션을 스칼라로 압축하는 언어 구문입니다. 엔터티 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 절 식에 표시되는 것과 동일한 이름 확인 범위를 사용하여 평가됩니다.

참고하십시오