2013-04-23 3 views
0

우리는 ORACLE을 중요시하며 테이블에서 임의의 행을 가져와 특정 조건을 만족해야합니다. 나는 검색하여이 경우 샘플이 유용 할 수 있음을 발견했습니다. 그러나 Sample에서 알 수 있듯이 전체 테이블에서 지정된 크기의 무작위 하위 집합을 반환합니다. 우리의 경우 특정 WHERE 조건과 일치하는 행이 필요하기 때문에 테이블에 해당 행이 포함되어 있어도 쿼리가 행을 반환하지 않을 수도 있습니다.oracle SAMPLE은 어디에서 필터를 사용할 수 있습니까?

FROM

SELECT 컬럼 (표 SAMPLE FROM 열 (SELECT 10) WHERE COLUMN = 'ABC') WHERE ROWNUM 상기 쿼리 = 1

, 10 % 샘플 세트와 임의의 행을 포함하지 않는 경우 'abc'열은 빈 결과를 반환합니다 (90 %에도 이러한 행이 포함될 수 있음에도 불구하고)

이 동작을 수정하기위한 제안 사항이 있습니까?

+0

당신은 [이 질문]를보고 할 수 있습니다 (http://stackoverflow.com/q/16024737/409172). 'SAMPLE'은 항상 예상대로 작동하지 않습니다. Alex의 대답에서'rownumber' 메서드를 사용하여 항상 임의의 행을 얻을 수 있습니다. –

+0

여기에서 문제가 무엇인지 모르겠습니다 ... column = 'abc'는 10이 아닌 7 % 일 수 있습니다.이 때문에 결과에서 null이 발생합니다. – Art

답변

2

이 시도 :

WITH data AS (SELECT column FROM table WHERE COLUMN='abc') 
SELECT column FROM data SAMPLE(10) 
WHERE rownum = 1 
관련 문제