본문 바로가기
반응형

Oracle(DB관련)77

그룹별 합계, 누적합계 sum() SELECT code01, code02, name, point, sum(point) over(partition by code01), sum(point) over(partition by code01 order by code01, code02, point), sum(point) over(order by code01, code02, point), sum(point) over() FROM tb_aaa; 2009. 11. 4.
순서정하기 rank() SELECT code01, code02, name, point, ROW_NUMBER() OVER(PARTITION BY code01 ORDER BY point) as num, RANK() OVER(PARTITION BY code01 ORDER BY point) as rank, DENSE_RANK() OVER(PARTITION BY code01 ORDER BY point) as dense FROM tb_aaa; ROW_NUMBER()는 정렬된 순서로 유일값의 번호를 부여한다. RANK()는 동점자에 같은 번호를 부여하고 다음, 사람에게는 동점자의 수만큼의 번호를 지난 다음번호를 부여한다. DENSE_RANK()는 동점자에 같은 번호를 부여하고, 동점자에게 부여된 다음 번호를 부여한다. 2009. 11. 4.
sys_connect_by_path row데이터를 column데이터로 select sys_connect_by_path(name, ',') as list from (select code01, code02, name, row_number() over(partition by code01 order by code01, code02) rn, count(*) over(partition by code01) cnt from tb_aaa where code01='01' ) where level = cnt start with rn = 1 connect by prior code01 = code01 and prior rn = rn - 1 2009. 11. 4.
merge into 있으면 update, 없으면 insert merge into tb_a a using dual on (a.code = ?) when matched then update set name = '있다' when not matched then insert (code, name) values (?, '없다') merge into tb_aaa a using (select code, name tb_bbb where code=?) b on (a.code = b.code) when matched then update set a.name = b.namel when not matched then insert (a.code, a.name ) values (b.code, b.namel ); 2009. 11. 3.
페이징 처리 sql 오라클의 경우 MYSQL과 같이 LIMIT 기능을 제공하지 않아 페이징 처리하는데 어려움이 따른다. 일반적으로 사람들이 가장 많이 사용하는 방법을 먼저 소개하도록 하겠다. 이 방법은 일방적인 데이터의 양에서는상당히 괜찮은 속도를 보장해준다. 그러나 대용량의 경우 부족한 성능을 보다. 1. 일반적인 오라클 페이징 처리 01.SELECT * FROM ( 02. SELECT A.*, 03. ROWNUM AS RNUM, 04. FLOOR((ROWNUM-1)/{디스플레이수}+1) AS PAGE, 05. COUNT(*) OVER() AS TOTCNT FROM ( 06. {검색쿼리 - 정렬이 필요할 경우 정렬조건 포함} 07. ) A 08.) WHERE PAGE = {페이지번호}; 09. 10.OR 11. 12.SE.. 2009. 10. 29.
join update table X, table Y 를 조인하여 X 컬럼을 Y 컬럼에 update 할 경우 update /*+ bypass_ujvc */ ( SELECT x.colnm rx, y.colnm ry FROM x, y WHERE x.key= y.key ) set rx = ry; 2009. 10. 28.
달력 query select min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 1, b.no)) "일", min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 2, b.no)) "월", min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 3, b.no)) "화", min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 4, b.no)) "수", min(decode(mod((b.n.. 2009. 7. 17.
반응형