012. 집약 - llighter/database GitHub Wiki

SQL 레벨업

SQL의 집약함수(aggregate function) 5개

  • COUNT
  • SUM
  • MAX
  • MIN

1. 여러 개의 레코드를 한 개의 레코드로 집약

- CASE식과 GROUP BY 응용

오류가 발생하는 쿼리

예제 추가할 것

현재 태이블을 id필드로 그룹하하고 CASE 식에 data_type을 지정하면, 하나의 레코드만 선택도니다. 따라서 집약함수를 사용하지 않아도 하나의 레코드를 생성할 수 있을 것이라 생각하지만 SQL의 원리(=집합론의 원리)를 위배하는 것이다.

모든 구현에서 작동하는 정답

예제 추가할 것

- 집약, 해시, 정렬

  • 정렬과 해시 모두 메모리를 많이 사용하므로, 충분한 해시용(또는 정렬용) 워킹 메모리가 확보되지 않으면 스왑 이 발생한다.
  • 이런 경우 TEMP 탈락 이 발생했다고 하는데 스왑이 발생하기 때문에 속도가 극적으로 저하된다.
  • 최악의 경우 TEMP 영역을 모두 써버려 SQL 구문이 비정상적으로 종료 될 수 도 있다.

2. 합쳐서 하나