개발자 항해
Group by 절 (+ Having절) 본문
- Group by 절 이란?
테이블 안에서 또다시 그룹화를 시킬때 사용한다.
[ 문법 ]
select 컬럼1, 컬럼2, 컬럼3...
from 테이블명
[ where 조건문 ]
[ group by 그릅화할 컬럼명 ]
[ order by 정렬할 컬럼명 ASC | DESC ];
★ group by 절과 그룹함수 사용시 주의사항(반드시 지켜야하는 문법)
=> select 절의 컬럼 리스트 중 그룹함수에 포함된 컬럼과 그룹함수에 포함되지 않은
컬럼이 함께 출력되기 위해서는 그룹함수에 포함되지 않은 컬럼은 반드시 group by절에
포함되어 있어야 문법 오류가 발생하지 않는다.
(역은 성립하지 않아도 된다!!) group by 절의 컬럼이 반드시 select 절에 포함될 필요는 없다.
예제를 살펴보자
1. employees 테이블에서 부서별로 평균 급여 출력
위 설명과 같이 그룹함수에 포함된 컬럼과 그룹함수에 포함되지 않은 컬럼을 같이 출력하려면
group by 절이 그룹함수에 '포함되지 않은' 컬럼을 적어줘야 오류가 나지 않는다.
2. 아래와 같이 group by절에 '그룹함수에 포함되지 않은 컬럼'을 적지 않으면
결과값이 오류가 난다.
3. 하지만 group by 절의 컬럼이 반드시 select 절에 포함될 필요는 없다.
다만, 결과가 의미있는 결과가 아니므로 잘 사용하지 않는다.
4. employees 테이블에서 부서 내 업무별 평균 급여 출력 구문
select 에 그룹함수에 묶이지 않는 컬럼은 group by절에 적어주었다.
- Having 절
< 조건절 >
where 절 : 행 제한 조건문을 작성하는 곳
having 절 : 행그룹 제한 조건문을 작성하는 곳(그룹함수에 포함된 조건문은 having에 작성해야함)
[ 문법 ]
select 컬럼1, 컬럼2, 컬럼3, .....
from 테이블명
[ where 조건문 ]
[ group by 그룹화할 컬럼명 ]
[ having 조건문 ]
[ order by 정렬할 컬럼명 ASC | DESC ];
아래는 예제와 결과값과 구문뜻.
'DB > MySQL' 카테고리의 다른 글
단일 행 함수 - 2. 숫자함수, 날짜함수 (0) | 2022.07.26 |
---|---|
단일 행 함수 - 1. 문자함수 (0) | 2022.07.26 |
그룹함수 (0) | 2022.07.25 |
서브쿼리(subquery) - 2. 다중행 서브쿼리 (0) | 2022.07.22 |
서브쿼리(subquery) - 1. 단일행 서브쿼리 (0) | 2022.07.21 |