2014-03-24 5 views

답변

0

나는 서브 쿼리에 윈도우 함수 ntile()을 제안 :

SELECT * 
FROM (
    SELECT *, ntile(50) OVER (ORDER BY ts) AS part 
    FROM tbl 
    WHERE ts >= $start 
    AND ts < $end 
    ) sub 
WHERE part NOT IN (1, 50); 

tsdate 열 것.

ntile()은 지정된 수의 파티션으로 나누는 행에 정수를 할당합니다. Per documentation:

첫 번째 분할이 가능하고, 마지막으로 최종 가깝게 제 2 % 일치 50 개 파티션을 이용하여 같은 동일 가능한

로 파티션을 나누어, 1 인수 값에 이르기까지의 정수 2 % (> 98 %).

참고, 50 행 미만인 경우 할당 된 번호는 최대 50 개가되지 않습니다.이 경우 첫 번째 행은 트리밍되지만 마지막 행은 트리밍되지 않습니다. 첫 번째와 마지막 2 %가 낮은 수의 행으로 잘 정의되지 않았으므로이 값이 올 Y 르거나 올 Y 르지 않다고 간주 될 수 있습니다. 총 행 수를 확인하고 필요에 맞게 조정하십시오. 예를 들어 마지막 줄을 자르면됩니다. 아니면 전혀.

+0

솔직히 말해서 나는 당신의 질문을 완전히 이해하지 못한다. 누적 값의 2 %보다 작고 98 %보다 큰 쿼리의 값을 보류하고 싶습니다. 예를 들어 GIS에서 래스터 데이터 시각화를위한 최소, 최대 값을 설정하는 방법을 알고 있습니다. 예를 들어 줄 수 있습니까? – Stefan

+0

@StefanB : 예를 들었습니다. 그리고 설명. 이제 데이터로 쿼리를 시도하십시오. 필요한 경우 테스트 케이스를 제공하는 것이 당신의 직업입니다. –