[SQL] SQL 그룹으로 각 그룹 상위 N 항목
SQLSQL 그룹으로 각 그룹 상위 N 항목
나는 유도 할 수있는 SQL 쿼리가 주어진 매장에서 상위 5 개 판매 아이템을 얻을 수 있습니다.
SELECT TOP 5 S.UPCCode, SUM(TotalDollarSales) FROM Sales S
WHERE S.StoreId = 1
GROUP BY S.UPCCode
ORDER BY SUM(S.TotalDollarSales) desc
판매 테이블이있다 -> UPCCode, SaleDate, STOREID, TotalDollarSales
나는 나에게 하나의 쿼리에서 각 상점에 판매 5 개 항목을 맨 반환하는 질의를 찾고 있어요. 여러 개의 쿼리를 작성하고 노동 조합을 사용하지만 효율적으로하지 않는 것 같습니다 수 있습니다.
어떻게 하나의 쿼리에서 각 상점 상위 5 개 판매 아이템을 얻을 수 있습니다.
미리 감사드립니다.
해결법
-
==============================
1.
;WITH s AS ( SELECT StoreID, UPCCode, tds, rn = ROW_NUMBER() OVER (PARTITION BY StoreID ORDER BY tds DESC) FROM ( SELECT StoreID, UPCCode, tds = SUM(TotalDollarSales) FROM Sales GROUP BY StoreID, UPCCode ) AS s2 ) SELECT StoreID, UPCCode, TotalDollarSales = tds FROM s WHERE rn <= 5 ORDER BY StoreID, TotalDollarSales DESC;
-
==============================
2.이 시도:
이 시도:
select ss.StoreId,is.* from (select distinct StoreId from Sales) ss cross apply (SELECT TOP 5 S.UPCCode, SUM(TotalDollarSales) as SumTotalDollarSales FROM Sales S WHERE S.StoreId = ss.StoreId GROUP BY S.UPCCode ORDER BY SUM(S.TotalDollarSales) desc) is
from https://stackoverflow.com/questions/15228273/sql-group-by-top-n-items-for-each-group by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의보기에서 행 순위 (0) | 2020.06.12 |
---|---|
[SQL] 오라클 : 기능 인덱스 선택의 고유성 (0) | 2020.06.11 |
[SQL] 오라클에게 마지막 삽입 IDENTITY 검색 (0) | 2020.06.11 |
[SQL] 엔티티 프레임 워크 6 호출 DB 기능 (0) | 2020.06.11 |
[SQL] PHP에서 MySQL의 쿼리를 통해 행에 의해 반복하는 방법 (0) | 2020.06.11 |