2017-11-05 1 views
5

는 내가 "그룹으로"를 사용하지 않고 동일한 결과를 얻으려고Group By 이외의 다른 용도는 무엇입니까?

SELECT SupplierID, COUNT(*) AS TotalProducts 
FROM Products 
GROUP BY SupplierID; 

이 DML 문을 사용하여 질문이 있습니다. 필요한 경우 Insert 및 Update를 사용하여 테이블 변수 또는 임시 테이블을 사용할 수 있습니다. 또한 While과 IF-Else를 사용할 수 있습니다.

저는 정말 도움이되지 않을 정도로 굉장합니다. 감사합니다. SO 커뮤니티.

SQL Server에서 사용됩니다. 다시 한번 감사드립니다.

+2

이 왜 GROUP BY를 피하려고하는 또 다른 방법은? –

답변

6

당신은 항상 윈도우 함수와 SELECT DISTINCT를 사용할 수 있습니다

SELECT DISTINCT SupplierID, 
     COUNT(*) OVER (PARTITION BY SupplierId) AS TotalProducts 
FROM Products; 

그러나 GROUP BY는 집계 쿼리를 작성하는 올바른 방법입니다.

3

은 또한 다음과 같은 쿼리를 사용할 수 있습니다 :

select distinct P.SupplierID, (select count(*) from Products 
where SupplierID=P.SupplierID) TotalProducts from Products P 

당신은 위의 쿼리를 사용하여 동일한 결과를 얻을 것이다,하지만 난 GROUP BY을 피하는 것은 좋은 아이디어라고 생각하지 않습니다!

2

하위 쿼리를 사용 : 당신은 공급 업체 ID에 대한 답변을 반복 얻을 것이다 구분없이 있도록

SELECT DISTINCT SupplierID 
     ,(SELECT COUNT(*) 
      FROM Products P2 
     WHERE P2.SupplierID = P.SupplierID 
     ) AS TotalProducts 
    FROM Products P 

명료 한 중복을 제거하는 것입니다은 ... 카운트 모든 행에 대해 실행합니다.

1

select distinct supplierId, p2.ttl 
from products p1 
cross apply 
(
    select count(*) 
    from products p2 
    where p1.supplierId = p2.supplierId 
) p2(ttl);