Barker표기법과 IE 표기법은 항상 헷갈린다.

 

 
인터넷에서 봤던 것중에 한눈에 보기 편한것을 정리한 내용이다.
나는 IE 표기법은 양쪽에 항상 | 가 있는것으로 Barker 표기법과 빠르게 먼저 구분을 하고 있다.
 
Barker 표기법의 속성값에는 # : 주식별자 , * : Not Null , o : Nullable  값이 표시되는 차이점도 있다.

'SQLP' 카테고리의 다른 글

오라클 트랜잭션  (0) 2024.10.19
윈도우 함수 - 그룹 내 비율 함수  (2) 2024.10.16
함수 호출에 따른 Recursive Call  (0) 2024.10.14
오라클 PIVOT UNPIVOT  (0) 2024.10.14
야간 배치 INSERT  (1) 2024.10.13

오라클 처럼 MVCC(Multi-Version Concurrency Control) 모델을 사용하는 DBMS는 UPDATE문이

시작된 시점을 기준으로 갱신 대상을 식별한다.

대상으로 식별된 레코드 중 UPDATE 문 시작 이후에 조건절 값이 변경된 레코드가 발견되면

일관성 확보를 위해 UPDATE문을 재시작한다.

조건절 값이 변경된 레코드가 발견되지 않으면 그래로 UPDATE를 진행하게 된다.

 

반면 SQL Server처럼 MVCC 모델을 사용하지 않는 DBMS는 ( UPDATE 문 시작 시점이 아니라)

레코드에 도달한 시점을 기준으로 갱신 대상을 식별함.

'SQLP' 카테고리의 다른 글

Barker 표기법과 IE 표기법  (2) 2024.11.10
윈도우 함수 - 그룹 내 비율 함수  (2) 2024.10.16
함수 호출에 따른 Recursive Call  (0) 2024.10.14
오라클 PIVOT UNPIVOT  (0) 2024.10.14
야간 배치 INSERT  (1) 2024.10.13

● 그룹내 비율 함수 

 

RATIO_TO_REPORT,  PERCENT_RANK, CUME_DIST, NTILE  

 

특이점은 CUME_DIST만 동일 순서이면 뒤 행의 함수 결과 값을 기준으로 한다.

누적백분율이라서 그런가...

아래 결과값에서 MARTIN과 TURNER의 CUME_DIST 값이 .67이 아니고 .83 이다.

 

SELECT
     ENAME
    ,SAL
    ,ROUND( RATIO_TO_REPORT (SAL) OVER () ,2 ) AS RTR         -- 전체 sum(컬럼)값에 대한 행별 컬럼 값의 백분율.  결과값은 > 0 & <=1 범위
    ,ROUND( PERCENT_RANK() OVER (ORDER BY SAL ) ,2) AS PR     -- 파티션별 윈도우의 값이 아닌 행의 순서별 백분열. 결과값은 >=0 & <=1 범위 
    ,ROUND( CUME_DIST() OVER(ORDER  BY SAL) ,2) AS CD         -- 파티션별 윈도우 누적 백분열을 구한다.           결과값은 > 0 & <=1 범위   
    ,NTILE(4) OVER (ORDER BY SAL) AS NT                       -- 전체 건수를 ARGUMENT값으로 N등분한 결과를 구함.
FROM EMP WHERE JOB = 'SALESMAN';

 

'SQLP' 카테고리의 다른 글

Barker 표기법과 IE 표기법  (2) 2024.11.10
오라클 트랜잭션  (0) 2024.10.19
함수 호출에 따른 Recursive Call  (0) 2024.10.14
오라클 PIVOT UNPIVOT  (0) 2024.10.14
야간 배치 INSERT  (1) 2024.10.13

오라클 함수에 SQL이 내장되어 있으면, 함수 실행 횟수 만큼 Recursive Call이 발생한다.

 

함수가 SELECT LIST에 있다면, 결과집합 건수만큼 함수가 실행되고,

함수가 조건절에 있으면 필터처리되는 건수만큼 함수가 실행된다.

'SQLP' 카테고리의 다른 글

오라클 트랜잭션  (0) 2024.10.19
윈도우 함수 - 그룹 내 비율 함수  (2) 2024.10.16
오라클 PIVOT UNPIVOT  (0) 2024.10.14
야간 배치 INSERT  (1) 2024.10.13
오라클 NULL  (0) 2024.10.12

현업에서 group by에 대한 쿼리 튜닝으로 pivot를 사용하는 것을 봤다.

pivot이 group by이상의 성능은 발휘하는것로 보인다.

 

●  PIVOT 사용

SELECT * FROM
    ( SELECT  DEPT ,MGR, SAL FROM EMP )
PIVOT
    ( SUM(SAL) AS TOTAL FOR MGR IN ( '부장' AS 부장,  '차장' AS 차장, '과장' AS 과장)

 

 

●  PIVOT 대신 GROUP BY 사용

SELECT
   DEPT
  ,SUM( DECODE( MGR , '부장', SAL)) AS 부장_TOTAL
  ,SUM( DECODE( MGR , '차장', SAL)) AS 차장_TOTAL
  ,SUM( DECODE( MGR , '과장', SAL)) AS 과장_TOTAL
FROM (   SELECT DEPT, MGR , SUM(SAL) SAL AS TOTAL  FROM EMP GROUP BY DEPT, MGR )
GROUP BY DEPT;


●  UNPIVOT 사용

SELECT * FROM
        ( SELECT PROJECTID , MANAGER, WORKER FROM WORK_TBL )
UNPIVOT INCLUDE NULLS
        ( COLVAL FOR COLNAME IN ( MANAGER, WORKER) )
ORDER BY PROJECTID;

 

 

●  UNPIVOT 대신 데이터 복제 사용

SELECT
     A.PROJECTID
    ,DECODE(B.LVL, 1,  'MANAGER',  2,  'WORKER') AS COLNAME
    ,DECODE(B.LVL, 1,  A.MANAGET, 2,  A.WORKER) AS COLVAL 
FROM WORK_TBL  A,  ( SELECT LEVEL AS LVL FROM DUAL CONNECT BY LEVEL <=2 ) B
ORDER BY A.PROJECTID

'SQLP' 카테고리의 다른 글

윈도우 함수 - 그룹 내 비율 함수  (2) 2024.10.16
함수 호출에 따른 Recursive Call  (0) 2024.10.14
야간 배치 INSERT  (1) 2024.10.13
오라클 NULL  (0) 2024.10.12
SQLP 소트 튜닝 2  (0) 2024.10.12

vue.js에서 아래와 같은 경고 문구가 나왔을 경우  <table> 태그 안에 <tbody> 태그를 넣어주면 해결 된다.

 

● 문제 현상

warning: <tr> cannot be child of <table>, according to HTML specifications. This can cause hydration errors or potentially disrupt future functionality.
66 |          <td>{{ cur }}</td>
67 |        </tr>
68 |        <tr>
   |        ^^^^
69 |          <td>operator</td>      

 

● 수정 내용

<table>
	<tbody>
    	<tr>
        	<td></td>
        </tr>
    </tbody>
</table>

 

 

 

 

TRUNCATE TABLE TARET_T;

ALTER TABLE TARGET_T MODIFY CONSTRAINT TARGET_T_PK DISABLE DROP INDEX;

ALTER TABLE TARGET_T NOLOGGING;

INSERT /*+ PARALLEL(T1 4) */ INTO TARGET_T  T1
SELECT /*+ FULL(T2) PARALLEL (T2 4) */ * FROM SOURCE_T2 T2:

COMMIT;

ALTER TABLE TARGET_T MODIFY CONSTRAINT TARGET_T_PK ENABLE NOVALIDATE;

ALTER TABLE TARGET_T LOGGING;

ALTER SESSION DISABLE PARALLEL DML;

'SQLP' 카테고리의 다른 글

함수 호출에 따른 Recursive Call  (0) 2024.10.14
오라클 PIVOT UNPIVOT  (0) 2024.10.14
오라클 NULL  (0) 2024.10.12
SQLP 소트 튜닝 2  (0) 2024.10.12
SQLP 소트 튜닝 1  (0) 2024.10.12

오라클 NULL

 

오라클의 경우 NULL 값을 가장 큰 값으로 하고

SQL SERVER의 경우 NULL 값을 가장 작은 값으로 간주한다.

 

ORDER BY로 NULL 값 정렬시 NULLS FIRST 로 NULL 값이 우선 출력하게 할 수도 있고,

NULLS LAST로 NULL 값을 마지막에 출력할 수도 있다.


SELECT * FROM DEPT ORDER BY LOC;


SELECT * FROM DEPT ORDER BY LOC  NULLS FIRST;


SELECT * FROM DEPT ORDER BY LOC NULLS LAST;

 

'SQLP' 카테고리의 다른 글

함수 호출에 따른 Recursive Call  (0) 2024.10.14
오라클 PIVOT UNPIVOT  (0) 2024.10.14
야간 배치 INSERT  (1) 2024.10.13
SQLP 소트 튜닝 2  (0) 2024.10.12
SQLP 소트 튜닝 1  (0) 2024.10.12

+ Recent posts