Database - 3(SQL 3)

김세영·2021년 4월 15일
0

Aggregate Functions

  • Aggregate Function(집계 함수)은 함수의 종류에 따라 통계를 내서 값으로 반환해줍니다.

    • AVG: avarage value
    • MIN: minimum value
    • MAX: maximum value
    • SUM: sum of values
    • COUNT: number of values
  • SELECT AVG (salary)
    FROM instructor
    WHERE dept_name = 'Comp._Sci.';
    "instructor 테이블에서 소속 학과가 Comp.Sci.인 튜플들의 평균 연봉을 계산해주세요"

  • SELECT COUNT (DISTINCT ID)
    FROM teaches
    WHERE semester = 'Spring' AND year = 2018
    "teaches 테이블에서 2018년 봄학기에 해당하는 튜플들 중 중복을 제거한 ID의 개수를 계산해주세요"

  • SELECT COUNT (*)
    FROM course
    "course 테이블의 튜플 수를 계산해주세요"

GROUP BY

  • 집계 함수와 GROUP BY를 함께 사용하면, GROUP BY에 설정한 attribute끼리 묶어 결과를 계산한 후 relation으로 반환해줍니다.

  • SELECT dept_name, AVG (salary) AS avg_salary
    FROM instructor
    GROUP BY dept_name
    "instructor 테이블에서 소속 학과별 평균 연봉을 계산한 후, (dept_name, avg_salary)에 담아주세요"

  • SELECT절의 집계 함수가 아닌 부분 (위의 예시에서 dept_name)은 GROUP BY 목록에 반드시 들어가야 합니다.

  • // Wrong Query
    SELECT dept_name, ID, AVG (salary)
    FROM instructor
    GROUP BY dept_name // Error -- ID 항목이 들어가야 합니다

HAVING

  • HAVINGGROUP BY에서 사용하는 조건 구문입니다.
    WHERE은 집계 함수를 사용할 수 없기 때문에 HAVING을 사용해야 합니다.

  • SELECT dept_name, AVG (salary) AS avg_salary
    FROM instructor
    GROUP BY dept_name
    HAVING AVG (salary) > 42000
    "instructor 테이블에서 소속 학과별로 묶은 후, (dept_name, avg_salary)에 평균 연봉이 42000보다 큰 튜플들만 담아주세요"

Nested Subqueries

SQL에선 쿼리를 중첩하여 사용할 수 있습니다.

  • Subquery: SELECT - FROM - WHERE

  • SELECT A1, A2, ..., An
    FROM r1, r2, ..., rm
    WHERE P
    에서,

    • FROM절의 r 은 다른 유효한 Subquery로 대체할 수 있습니다.
    • WHERE절의 P 는 [Attribute] <operation> (subquery)로 대체할 수 있으며,
      operation은 추후 설명합니다.
    • SELECT절의 A 는 하나의 값을 갖는 Subquery로 대체할 수 있습니다.
profile
초보 iOS 개발자입니다ㅏ

0개의 댓글