GROUP BY, HAVING

2022. 3. 17. 21:18SQL

GROUP BY

  • 지정된 열의 값이 하나의 그룹으로 묶임
  • GROUP BY + 집계함수
  • 점포별, 상품별, 월별, 일별 등 특정 단위로 집계할 때 사용
SELECT [GROUP BY 대상 컬럼 이름], ... , [그룹 함수]
FROM [테이블 이름]
WHERE 조건식
GROUP BY [컬럼 이름];

GROUP BY가 쓰인 쿼리의 SELECT 절에는 GROUP BY 대상 컬럼과 그룹 함수만 사용 가능함

HAVING

SELECT [컬럼 이름], ..., [그룹 함수]
FROM [테이블 이름]
WHERE 조건식
GROUP BY [컬럼 이름]
HAVING 조건식;
  • HAVING + 조건식 형식으로 사용함
  • 조건식이 True(참)이 되는 그룹만 선택함
  • HAVING 절의 조건식에서는 그룹 함수를 활용함

집계함수는 WHERE 구의 조건식에서는 사용할 수 없음 조건식이 참인 그룹값만 클라이언트에게 반환

WHERE 구에서는 집계함수를 사용할 수 없다! 집계함수를 사용할 경우 HAVING 구로 검색조건을 지정! GROUP BY에서 지정한 열 이외의 열은 집계함수를 사용하지 않은 채 SELECT 구에 지정할 수 없다!

COUNT

그룹의 값 수를 세는 함수

  • COUNT([컬럼 이름]) 형식으로 SELECT, HAVING 절에서 사용
  • 집계할 컬럼 이름은 그룹의 기준이 되는 컬럼 이름과 같아도 되고, 같지 않아도 됨
  • COUNT(1)은 하나의 값을 1로 세어주는 표현으로 COUNT 함수에 자주 사용함
  • GROUP BY가 없는 쿼리에서도 사용 가능하며, 이때는 전체 로우에 함수가 적용 됨
SELECT [컬럼 이름], ..., COUNT([컬럼 이름])
FROM [테이블 이름]
GROUP BY [컬럼 이름]
HAVING 조건문;

'SQL' 카테고리의 다른 글

SQL - 심화1  (0) 2022.03.20
View  (0) 2022.03.20
제약조건 , 권한  (0) 2022.03.17
집합  (0) 2022.03.17
Index  (0) 2022.03.17