집 >데이터 베이스 >MySQL 튜토리얼 >PARTITION BY와 GROUP BY: SQL 쿼리의 차이점은 무엇입니까?
파티셔닝 쿼리: PARTITION BY 및 GROUP BY 이해
데이터 집계 영역에서 데이터베이스 쿼리는 종종 GROUP BY 절에 의존합니다. 데이터를 조작하고 집계합니다. 최근 대체 기술인 PARTITION BY가 최적화된 쿼리 성능을 추구하는 개발자의 관심을 끌었습니다. 그런데 이 두 절은 어떻게 다른가요?
PARTITION BY는 GROUP BY와 달리 ROW_NUMBER()와 같은 창 함수의 컨텍스트 내에서 작동합니다. 주요 목적은 특정 기준에 따라 데이터를 하위 집합으로 분할하여 마치 데이터 집합 사이를 이동하는 창처럼 각 하위 집합 내의 값을 계산할 수 있도록 하는 것입니다.
반면에 GROUP BY는 다음을 수정합니다. 전체 쿼리를 실행하여 비슷한 값을 가진 행 전체에 걸쳐 데이터를 집계할 수 있습니다. 반환된 행을 통합하고 평균 또는 합계와 같은 집계 값을 계산하여 반환되는 행 수를 줄입니다.
차이점을 설명하려면 다음 예를 고려하세요.
GROUP BY 사용:
SELECT customerId, COUNT(*) AS orderCount FROM Orders GROUP BY customerId;
이 쿼리는 고객 ID별로 주문을 그룹화하고 각 고객의 주문 수를 계산합니다. 반환되는 행 수를 줄입니다.
PARTITION BY 사용:
SELECT ROW_NUMBER() OVER (PARTITION BY customerId ORDER BY orderId) AS OrderNumberForThisCustomer FROM Orders;
이 쿼리는 각 고객 파티션 내의 각 주문에 대한 주문 번호를 계산하여 순위를 허용합니다. 각 고객의 주문 수입니다. 반환된 행 수에는 영향을 미치지 않습니다.
요약하자면 PARTITION BY와 GROUP BY는 서로 다른 목적을 제공하지만 데이터 조작 및 집계라는 공통 목표를 공유합니다. GROUP BY는 쿼리에 대해 전체적으로 작동하여 반환되는 행 수를 줄이는 반면 PARTITION BY는 창 기능 범위 내에서 작동하며 행 수를 변경하지 않습니다. 이러한 절 간의 차이점을 이해하면 개발자는 특정 데이터 조작에 맞게 쿼리를 맞춤화하고 쿼리 성능을 향상시킬 수 있습니다.
위 내용은 PARTITION BY와 GROUP BY: SQL 쿼리의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!