SQL GROUP BY, HAVING절 - Oracle

2023. 6. 9. 16:53· Computer Science/데이터베이스
목차
  1. 집계 함수
  2. GROUP BY 절
  3. HAVING 절

집계 함수

  • 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수
  • GRUOP BY 절은 행들을 소 그룹화한다.
  • SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있다.

DISTINCT는 중복값 제거 (ex. 나이데이터가 1,2,3,4,4,4 가 있을 때 DISTINCT 를 쓰면 1,2,3,4가 조회됨)

COUNT(*)은 NULL을 포함한다. (컬럼일부만 NULL일때를 고려안해도됨)

COUNT(표현식,또는 컬럼)은 NULL을 제외한다.

 

GROUP BY 절

  • GROUP BY 절을 통해 소그룹 별 기준을 정한 후, SELECT 절에 집계 함수를 사용한다.
  • 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다.
  • GROUP BY 절에서는 SELECT 절과는 달리 ALIAS 명을 사용할 수 없다.
  • 집계 함수는 WHERE 절에는 올 수 없다. (집계 함수를 사용할 수 있는 GROUP BY 절보다 WHERE 절이 먼저 수행된다.)
  • WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행등을 미리 제거시킨다.
  • HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계함수를 이용한 조건을 표시할 수 있다.
  • GROUP BY 절에 의한 소 그룹별로 만들어진 집계 데이터 중, HAVING 절에서 제한 조건을 두어 조건을 만족하는 내용만 출력한다.
  • HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치한다. (하지만 바꿔도 된다)

 

HAVING 절

  • WHERE 절에서는 집계 함수를 쓸 수 없다.
  • 집계된 결과 집합을 기준으로 특정 조건을 주고 싶은 경우 HAVING 절을 이용하면 된다.
  • HAVING 절은 WHERE 절과 비슷하지만 그룹을 나타내는 결과 집합의 행에 조건이 적용된다는 점에서 차이가 있다.

단순연산에 NULL이 들어가면 결과값은 무조건 NULL이다. 

하지만 집계연산을 이용하면 NULL을 빼기때문에 계산이 된다. 평균을 구할 때도 NULL은 아예 빼고 계산한다.

위의 예시에서 (NULL,10,20,30,40)의 집합이지만 계산은 아래와 같이 한다.

SUM=10+20+30+40

AVG=(10+20+30+40)/4, NULL은 처음부터 대상에서 제외되기 때문에 나누기 4로 계산한다.

'Computer Science > 데이터베이스' 카테고리의 다른 글

SQL 조인(JOIN)- Oracle  (0) 2023.06.10
SQL ORDER BY절 - Oracle  (0) 2023.06.09
SQL 함수(Function) - Oracle  (0) 2023.06.09
SQL WRHER절 - Oracle  (0) 2023.06.09
TCL(Transaction Control Language)-Oracle  (0) 2023.06.09
  1. 집계 함수
  2. GROUP BY 절
  3. HAVING 절
'Computer Science/데이터베이스' 카테고리의 다른 글
  • SQL 조인(JOIN)- Oracle
  • SQL ORDER BY절 - Oracle
  • SQL 함수(Function) - Oracle
  • SQL WRHER절 - Oracle
윤재에요
윤재에요
윤재에요
yunzae.log
윤재에요
전체
오늘
어제
  • 분류 전체보기 (438)
    • Computer Science (115)
      • 데이터베이스 (50)
      • 네트워크 (18)
      • 소프트웨어 공학 (1)
      • 알고리즘 (10)
      • 자료구조 (9)
      • 컴퓨터구조 (0)
      • 운영체제 (0)
      • 데이터 통신 (16)
      • 프로그래밍언어론 (11)
    • Project (20)
      • 후크(Flutter) (1)
      • BDSR로그북(App,BackEnd) (2)
      • 나만의 주점(STM32,Arduino,androi.. (9)
      • 공다(App,BackEnd) (2)
      • 카카오쇼핑 클론코딩 (4)
      • 암호화폐자동매매 (2)
    • Problem Solving (208)
      • 자바 문법 (20)
      • 파이썬 문법,함수 (6)
      • 그리디 (5)
      • 구현 (43)
      • DFS (3)
      • BFS (17)
      • 정렬 (15)
      • 이진 탐색 (16)
      • 다이나믹 프로그래밍 (6)
      • 최단 경로 (5)
      • 그래프 (1)
      • 자료구조 (5)
      • 투포인터 (15)
      • SQL (44)
      • 구간합 (7)
    • I leaned (78)
      • 스프링,스프링부트 (31)
      • Git (6)
      • JAVA (5)
      • Etc (30)
    • 취업 (15)
      • PT면접 (6)
      • 기술면접 (9)
      • 인성면접 (0)
    • log (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • weak entity
  • 이것이 코딩테스트다.
  • 이것이코딩테스트다
  • 효율적인화폐구성
  • 최단 거리
  • Relationship model
  • 힙큐
  • 다익스트라
  • 플로이드 워셜
  • 교환정렬
  • E-R Model
  • 다이나믹프로그래밍
  • 기수정렬
  • 부품찾기
  • 계수정렬
  • 재시도
  • 데이터베이스
  • 개미전사
  • 다이나믹
  • DP
  • 파이썬
  • 최단거리
  • 참조 무결성
  • 다이어그램
  • 제약 사항
  • 이것이 코딩테스트다
  • 그리디
  • 먀
  • UML
  • 카카오테크캠퍼스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
윤재에요
SQL GROUP BY, HAVING절 - Oracle
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.