쿼리문은 win/pansu 에 따른 내림차순으로 데이타를 가져오려고 합니다.
쿼리 1. select id,win,pansu from gamedata where pansu <> 0 order by win/pansu desc
쿼리 2. select top 4 id,win,pansu from gamedata where pansu <> 0 order by win/pansu desc
이렇게 쿼리 둘을 던졌을떄
win,pansu 필드는 int 형입니다.(예제 데이타 4개 (1,2) (1,2) (0,2) (0,1))
입력된 레코드 순서는 데이타 3, 데이타 4, 데이타 2, 데이타 1 (입력된 순서에 따라 desc 되는지 확인차)
win/pansu 즉 실수형 order by 를 원했는데 쿼리 1 에선 나름대로(?) 원하는 정렬이 나오는데
쿼리2에선 모두 정렬값이 0으로 인식되어 입력된 순서에 따라 내림차순 정렬이 되더군요.
일단 질문 top 있을때 정수로 모두 같은 값으로 인식해서 입력순서(키값에 따른 입력순서)에 따라 결과가 나오고
top 없을때 그나마 제가 원하는 순서대로 나오더랍니다.(문제 접근 order by 가 정수로 체크가 되었다면 모두 같은 결과여야 하는데)
이 부분은 아직 알수 없는 애매한 부분이라 질문을 드립니다. 고수님들의 답을 기다리며
최종 결론 쿼리 3. select top 4 id,win,pansu,convert(float,win) / convert(float,pansu) as aa from gamedata where pansu <> 0 order by aa desc
하면 top이 있고 없고 상관없이 원하는 값이 나오던군요.
|