개발/ORCLE

오라클 랜덤, 중복제거

쭈니후니 2008. 11. 18. 10:11

select *  from ( select * from 테이블 order by dbms_random.value )

기본적인 오라클 랜덤 함수 예이다.

select row_number() over(partition by 중복조회컬럼 order by order by 정렬컬럼) 재명명할 컬럼이름 
from 테이블

중복제거 하면서 전체값 가져오는 방법이다.

EX)

select * from
(
SELECT a.course_id,a.course_name,b.study_day_term,

row_number() over(partition by a.kind order by a.kind) cnt, a.kind  

--파란색 부분은 같은 강좌 단원 중복제거 한것입니다

FROM elt_course a, elt_org_course b

WHERE b.org_class1 = 'S110'

 AND b.open_state = '1'

 AND b.a_admission = '1'

 AND a.course_id = b.course_id

 order by dbms_random.value

--이 SELECT문을 랜덤으로 뿌려주게 하였습니다.
)
where cnt = '1'

-- 중복 제거문을 썼지만 1로 정해주지 않으면 같은 단원이 다 나오기때메 하나만 나오게 한것입니다.

and rownum <= 4


제가 만든 간단한 추천강좌 랜덤 쿼리입니다.