랜덤하게 출력되는 함수가 있을가요?
예를들어 oracle의 sample()함수나 MySQL의 rand()함수가 같은거요.
랜덤으로 시행되는 추첨기능을 만들려고 해서요
참고말씀 부탁드릴께요.
rand() 라는 함수가 있습니다.
아래 링크는 db2 도움말(매뉴얼)입니다. 참고하세요.
WITH temp1 (col1,random) AS(VALUES ((0),(0))UNION ALLSELECT col1 + 1, int(rand()*10000)FROM temp1WHERE col1 + 1 < 1000)
-- int(rand()*10000 : 10000미만의 random 숫자를 얻는다.
-- col1 + 1 < 1000 : rand() 를 실행시킬 횟수 지정
select t1.tabname from (select rownumber() over() rn,tabname from syscat.tables) t1 where rn in (SELECT random FROM temp1 where random<500 fetch first 50 rows only );
-- syscat.tables : random 값을 뽑아낼 테이블 명으로 변경하세요
-- random<500 : 대상 테이블의 count를 지정
-- fetch first 50 rows only : 추점 대상 count 지정 ( subquery안에서 fetch first 사용은 V8이상에서 가능합니다)
select * from tabname a where ... order by rand() fetch first 500 rows only with ur;
이 방법이 가장 빠릅니다. 조건에 맞는 것중 해당 비율만큼만 읽어옵니다.
select * from tabname a where ...
and rand()<= (구하고자 하는 column 수/총 column 수)