0
나는 하루 종일 휴식 (아래 쿼리의 ByDay) 인보기가 이미 있습니다.그룹화와 순위를 결합하는 올바른 방법은 무엇입니까?
이제 캠페인이 수익 창출 캠페인에서 상위 10 위 안에들 경우 결과에 행이 포함되도록 필터링하려고합니다.
나는 원했던 것을 얻었지만 나는 분명하고 올바른 방법으로 건너 뛸지도 모른다는 느낌을 가지고있다.
WITH T AS (
SELECT
ByDay.[Day]
,ByDay.[Campaign Name]
,ByDay.[Revenue USD]
FROM ByDay
WHERE ByDay.[Period]='Mar 2012'
),
TT AS (
SELECT
ByDay.[Campaign Name]
,SUM(ByDay.[Revenue USD]) [Sum Revenue USD]
FROM ByDay
WHERE ByDay.[Period]='Mar 2012'
GROUP BY ByDay.[Campaign Name]
)
SELECT * FROM (
SELECT
T.[Day]
,T.[Campaign Name]
,T.[Revenue USD]
,TT.[Sum Revenue USD]
,DENSE_RANK() OVER(ORDER BY TT.[Sum Revenue USD] DESC) AS R
FROM T
INNER JOIN TT ON T.[Campaign Name]=TT.[Campaign Name]
) TTT
WHERE R < 11
ORDER BY R
이와 비슷한 것을 얻을 수있는 간단한 방법이 있습니까?
감사 - 지금 내 쿼리가 상당히 논리적 읽기 –