안녕하세요.
예를들어 100명이 합계점수를 가지고 있다면
상위 25%의 사람들만 추출하려 합니다.
select *
from 시험성적
sybase에서 어떻게 하면
위와 같이 상위 25% 성적에
해당하는 데이터만 추출할수 있을까요?
감사합니다.
declare @PTRow int --상위 25%에 해당하는 rowcount 수를 저장
declare @sql varchar(250) --TOP 수행쿼리 저장. 250 byte 이상은 수행힘듬.
SELECT @PTRow=convert(int, rowcnt(convert(numeric(20,9), doampg)) * 0.25)
FROM sysindexes
WHERE id=object_id("시험성적") and indid=0
SELECT @sql="SELECT TOP " + convert(varchar, @PTRow) + " * FROM 시험성적"
-- select @sql -- 디버그용
EXEC (@sql)
MSSQL 처럼 TOP은 있는데 퍼센트를 지정하는 기능은 없는 관계로
전체 테이블의 row count를 구해서 25%에 해당하는 row개수를 구한후
Dynamic 쿼리를 만들어 수행시켜주는 방식으로 처리해 봤습니다.