GROUP BY, HAVING
2022. 3. 17. 21:18ㆍSQL
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 조건문;