메모장 / / 2022. 5. 17.

[SQLD] 2-1-7. Group By / Having 절

728x90
반응형

*집계함수 (Aggregate Function)

-여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수

-GROUP BY 절은 행들을 소그룹화

-SELECT 절, HAVING 절, ORDER BY 절에서 사용

 

집계함수 함수 설명
  COUNT(*) NULL 값을 포함한 모든 행의 수를 출력
  COUNT(표현식) NULL값인 것을 제외한 행의 수를 출력

 

*GROUP BY 절

-FROM 절과 WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별 통계 정보를 얻을 때 추가로 사용

 

SELECT DISTINCT 칼럼명 ASLIAS 명

FROM 테이블 명

WHERE 조건식

GROUP BY 칼럼 / 표현식

HAVING 그룹의 조건식;

 

*GROUP BY절과 HAVING 절의 특성

 

[GROUP BY 절]

-GROUP BY 절을 통해 소그룹별 기준을 정한 뒤, SELECT 절에 집계 함수 사용

-집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행

-집계함수는 WHERE 절에는 올 수 없음 [GROUP BY절보다 WHERE 절이 먼저 수행]

-WHERE 절은 전체 데이터를 GROUP BY로 나누기 전에 행들을 미리 제거하는 역할

-HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹위 집계 함수를 이용한 조건을 표시할 수 있음

-원천적으로 ORDER BY 절 명시해야 정렬 

-GROUP BY 절에서는 ALIAS명을 사용할 수 없다.

-HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치

 

[HAVING 절]

-WHERE 절에는 집계 함수를 사용할 수 없다.

-GROUP BY절 보다 HAVING 절을 앞에 사용해도 같은 결과가 나오지만, 논리적으로 순서를 지키는 것을 권고한다.

-가능하면 WHERE 절에서 조건절을 적용하여 GROUP BY 계산 대상을 줄이는 것이 효과적

-HAVING 절은 SELECT 절에 사용되지 않은 칼럼이나 집계 함수가 아니더라도, GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시 가능

-WHERE 절 조건 변경은 대상 데이터 개수가 변경되므로 결과 데이터 값이 변경 가능성 0 

-HAVING 절 조건 변경은 결과 데이터 변경은 없고 출력되는 레코드 개수만 변경 가능성 0

 

 

 

 

 

 

 

728x90
반응형

'메모장' 카테고리의 다른 글

[SQLD] 개념요약 - 과목 1데이터 모델링의 이해  (0) 2022.05.19
[SQLD] 2-1-8. ORDER BY 절  (0) 2022.05.17
[SQLD] 2-1-6. 함수  (0) 2022.05.16
[SQLD] 2-1-5. Where 절  (0) 2022.05.12
[SQLD] 2-1-4. TCL  (0) 2022.05.12
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유