[SQL] C #을 LINQ에서 구현 RANK OVER SQL 조항
SQLC #을 LINQ에서 구현 RANK OVER SQL 조항
나는 다음과 같은 T-SQL 절을 구현해야 ....
RANK() OVER (PARTITION BY a.CategoryKey ORDER BY (x.Rate * @BASE_RATE ) DESC )as Rank
... C # LINQ한다. 지금까지 내가 가지고 올 한 것 같은 것입니다 ....
var rank = data.GroupBy(d => d.CategoryKey)
.Select(group => group.OrderByDescending(g => g.Rate * @BAES_RATE)
나는 이것이 나에게 속도 * BASE_RATE에 의해 주문시 각 순위 파티션을 줄 것이라고 생각합니다. 그러나 실제로 필요한 것은이 더 큰 결과 내에서 하위 쿼리되는 단일 행의 개별 순위이다. 그래서 정말 내가에서 일하고 있어요 전체 SQL 쿼리는 같은 것입니다 ....
SELECT
a.Rate,
a.CategoryKey,
a.ID,
.
.
.
RANK() OVER (PARTITION BY a.CategoryKey ORDER BY (x.Rate * @BASE_RATE ) DESC )as Rank
FROM data
해결법
-
==============================
1.당신은 정확한 순위의 의미 (즉, 공동 순위)이 필요하지 않은 경우. 당신은 선택 돌기 사용할 수있는 인덱스를 사용할 수 있습니다
당신은 정확한 순위의 의미 (즉, 공동 순위)이 필요하지 않은 경우. 당신은 선택 돌기 사용할 수있는 인덱스를 사용할 수 있습니다
var rank = data.GroupBy(d => d.CategoryKey) .SelectMany(g => g.OrderByDescending(y => y.Rate * @BAES_RATE) .Select((x,i) => new{g.Key, Item=x, Rank=i+1}))
그렇지 않으면 당신은이 답변을 볼 수 있습니다
from https://stackoverflow.com/questions/20953645/implementing-rank-over-sql-clause-in-c-sharp-linq by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 테이블에 연속 3 개 행을 비교 (0) | 2020.07.09 |
---|---|
[SQL] MySQL의 카운트 성능 (0) | 2020.07.09 |
[SQL] sp_MSforeachdb : 결과 만에 데이터베이스에서 결과를 포함 (0) | 2020.07.09 |
[SQL] 어떻게 이동 평균 사용하여 MySQL을 계산합니까? (0) | 2020.07.09 |
[SQL] JSON 데이터 타입의 레코드 중첩 된 배열 쿼리 조합 (0) | 2020.07.09 |