아래 처럼 쿼리 작성하여 테스트 해서 정상 순위가 작성됩니다만, 최종 결과 쿼리에서 Order by Rank 없이 순위 별로 출력할 방법이 없나요?
Data 필드 항목의 인덱스를 ASC, DESC 어떤걸로 하여도 Data 값이 작은 것부터 출력이 되네요.
도움 부탁드립니다.
CREATE DATABASE TestDB
GO
USE TestDB
GO
CREATE TABLE Sample1
(
Seq INT identity,
Data INT
)
GO
CREATE INDEX idx_data ON Sample1(Data)
GO
/* 샘플 데이터 만들기 */
DECLARE
@Data INT,
@Count INT
SET NOCOUNT ON
SET @Count = 0
WHILE(@Count < 200000)
BEGIN
INSERT INTO Sample1(Data) VALUES(CAST(RAND() * 100 AS INT))
SET @Count = @Count + 1
END
GO
/*
순위 쿼리
Data 의 인덱스를 ASC 또는 DESC 로 하여도 Data 값이 작은 순서로 결과가 출력된다.
큰 순서로 출력하도록 한다면 하단 쿼리중 ORDER BY RANK 를 사용한 소트를 할 필요가 없을텐데.....
*/
SELECT
Data ,
(
SELECT COUNT(*) + 1 FROM Sample1 WHERE Data > A.Data
) AS RANK
FROM
Sample1 AS A
ORDER BY RANK <-- 요걸 빼고 싶어요....
GO
|