[SQLD/P] 기타 참고사항

Hyo Kyun Lee·2023년 3월 14일
0

SQLD/P

목록 보기
79/82

1. Oracle, SQL Server 공백처리

  • CHAR

고정형 문자열로, 해당 크기보다 작은 문자열이 입력되었을 경우, 띄어쓰기(스페이스바)로 채운다.

  • 공백('')

Oracle에서는 공백은 NULL과 같고, SQL Server에서는 공백은 그냥 하나의 공백이다.

DB에 공백('')입력하고 조회할때
Oracle -> WHERE ~ IS NULL 조회됨, WHERE ~ IS '' 조회안됨
SQL Server -> WHERE ~ IS NULLL 조회안됨, WHERE ~ IS '' 조회됨

  • 공란(스페이스)

LENGTH를 하였을때, Oracle은 공란까지 길이에 포함한다. 반면 SQL Server는 공란은 길이에 포함하지 않는다.

LENGTH에 대한 개념만 반대이고, 나머지 NULL에 대한 개념은 그대로 유지된다 보면 된다.

  • 이외 ''를 입력하였을때, LENGTH를 한다면?

Oracle의 경우엔 공백은 NULL과 같다. 따라서 NULL로 출력된다.
SQL Server의 경우엔 공백은 NULL이 아니다. 다만 길이는 없으므로 0으로 출력된다.

※ 참고

group by하였는데 그룹화대상이 NULL일 경우에도 group by 진행한다.

2. 누적값 구하기

  • window function 사용
SUM(매출) OVER(PARTITION BY 매출월, ORDER BY 매출월 RANGE UNBOUNDED PRECEDING AND CURRENT ROW) AS 누적매출
  • window function 사용X(SELF JOIN)
SELECT ~~~, MAX(A.매출) AS 매출 SUM(B.매출) AS 누적매출  
FROM 매출집계 A, 매출집계 B
WHERE A.매출월 >= B.매출월
GROUP BY A.매출월
ORDER BY A.매출월

3. AUTO COMMIT

DDL -> AUTO COMMIT!

4. 테이블/컬럼 삭제와 로그

  • TRUNCATE, DROP -> 로그 안남김
  • DELTE -> 로그 남김

5. NATURAL JOIN

  • 두 테이블에서 공통된 속성을 찾아서 서로 연결하고, 없다면 제외한다.

6. FULL OUTER JOIN

  • 중복된 부분(공통된 부분)은 1건으로
  • A, B 각각의 개별적인 부분은 출력하되, 이때 반대쪽은 NULL로 출력

7. 순서별 백분율

  • PERCENT_RANK

8. 동일 등수를 허용하지 않는다

  • ROW_NUMBER OVER()

9. 참고자료

Oracle, SQL Server의 공백처리관련

natural join 관련 예제 - https://ju-hy.tistory.com/102

partition by 후 특정 기준에 대한 누적값 구하기

0개의 댓글