목록전체 글 (901)
정미나닷컴
누적 매출 구하기SELECT T1.지점, T1.판매월, MAX(T1.매출) 매출, SUM(T2.매출) 누적매출 FROM 월별지점매출 T1, 월별지점매출 T2WHERE T1.지점 = T2.지점 AND T1.판매월 >= T2.판매월 -- 범위 연산자 JOINGROUP BY T1.지점, T1.판매월ORDER BY T1.지점, T1.판매월;▼ SELECT 지점, 판매월, 매출, SUM(매출) OVER (PARTITION BY 지점 ORDER BY 판매월RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) 누적매출 FROM 월별지점매출; ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW N PRECEDING (ex : 10 PRECEDIN..
오~ 이제 쓱페이로도 기프티콘 구매 가능!! 쓱머니 만원 이하로 남아 어디 내밀기도 애매할 때 친구한테 생색내며 기프티콘 전송해주면 아주 딱일 듯~!! ㅋ 나도 받고 싶다, 기프티콘!!!
수정 가능 JOIN View 활용- 다른 테이블과 JOIN이 필요한 경우 전통적인 방식의 UPDATE문을 사용하면 비효율 발생UPDATE 고객 C SET 최종거래일시 = (SELECT MAX(거래일시) FROM 거래 WHERE 고객번호 = C.고객번호 AND 거래일시 >= TRUNC(ADD_MONTHS(SYSDATE, -1))), 최근거래횟수 = (SELECT COUNT(*) FROM 거래 WHERE 고객번호 = C.고객번호 AND 거래일시 >= TRUNC(ADD_MONTHS(SYSDATE, -1))), 최근거래금액 = (SELECT SUM(거래금액) FROM 거래 WHERE 고객번호 = C.고객번호 AND 거래일시 >= TRUNC(ADD_MONTHS(SYSDATE, -1)))WHERE EXISTS (S..
스칼라 서브쿼리 - 함수처럼 한 레코드 당 정확히 하나의 값만을 리턴하는 서브쿼리 - 주로 select-list에서 사용, 컬럼이 올 수 있는 대부분 위치에 사용 가능 SELECT EMPNO, ENAME, SAL, HIREDATE, (SELECT D.DNAME FROM DEPT D WHERE D.DEPTNO = E.DEPTNO) DNAME FROM EMP E WHERE SAL >= 2000; -- Outer JOIN과 같은 결과 -- DEPT와 JOIN에 실패하는 EMP 레코드가 있다면 DNAME으로 NULL 값 출력 스칼라 서브쿼리의 캐싱 효과 - 오라클은 스칼라 서브쿼리의 입력 값과 출력 값을 내부 캐시(Query Execution Cache)에 저장 - 스칼라 서브쿼리가 수행될 때 일단 '입력 값'..
NL JOIN- Random access 발생량에 의해 성능이 좌우 -- 고객의 총 수는 10만 명, 납입 방법은 세가지-- 두 테이블 모두 JOIN 컬럼에 인덱스를 갖고 있다고 가정 - 필터 조건이 없는 경우SELECT /*+ use_nl (a b) */ A.납입방법, B.* FROM 납입방법 A, 고객 BWHERE B.납입방법코드 = A.납입방법코드; - 드라이빙 테이블 : 고객 T /*+ leading(b) use_nl(a) */▶ 10만번 + 10만번 = 총 20만번의 Random access - 드라이빙 테이블 : 납입 T /*+ leading(a) use_nl(b) */▶ 3번 + 10만번 = 총 10만 3번의 Random access * 다른 필터 조건이 없는 상황에서는 작은 쪽(=1쪽) 집..
인덱스 설계 전략- 조건절에 항상 사용되거나, 자주 등장하는 컬럼들을 선정- '=' 조건으로 자주 조회되는 컬럼들을 앞쪽에 위치 -- 총 고객수 100만 명, 상품은 10만 개, 거래일자의 검색범위는 유동적인 테이블 [검색조건 1] WHERE 고객번호 = '0000001' AND 거래일자 BETWEEN '20150101' AND '20171001'; [검색조건 2] WHERE 상품번호 = '1' AND 거래일자 BETWEEN '20150101' AND '20171001'; [검색조건 3] WHERE 고객번호 = '0000001' AND 상품번호 = '1' AND 거래일자 BETWEEN '20150101' AND '20171001'; [검색조건 4] WHERE 거래일자 BETWEEN '20150101' A..
보호되어 있는 글입니다.
Bitmap Index (비트맵 인덱스) - Key 값에 중복이 없고, Key 값 별로 하나의 비트맵 레코드를 가짐 - 비트맵 상의 각 비트가 하나의 테이블 레코드와 매핑 row#0( 8001) flag: ------, lock: 0, len=35 col 0; len 2; (4): 42 4c 55 45 → 키 값 : BLUE col 1; len 6; (6): 01 00 9f 4c 00 00 → 시작 RowID col 2; len 6; (6): 01 01 a4 03 01 47 → 종료 RowID col 3; len 15; (15): 00 c1 ae bb fa 02 c1 a1 10 c1 94 19 c2 dc 07 → 비트맵- 시작 RowID와 종료 RowID만 갖고 있다가 테이블 액세스가 필요할 때면 각 비..