📌 열 이름으로 그룹화
SELECT 그룹화할 열 이름1, 그룹화할 열 이름2, 집계함수 FROM 테이블명 WHERE 조건절 GROUP BY 열 이름1, 열 이름2;
✔️ 집계 함수를 제외한 SELECT문의 모든 열은 GROUP BY절에 있어야 함
📌 열 위치로 그룹화
SELECT 그룹화할 열 이름1, 그룹화할 열 이름2, 집계함수 FROM 테이블명 WHERE 조건절 GROUP BY 1, 2;
✔️ ORDER BY절이 열 위치를 지정해서 정렬한 것과 같이 GROUP BY절도 열 위치를 지정해서 그룹화 할 수 있음
✔️ GROUP BY절은 WHERE 조건절 뒤에 위치하고, ORDER BY절 앞에 위치
✔️ 그룹화될 열에 NULL값을 포함할 경우 NULL 값도 그룹화됨 (NULL값을 여러개 포함하고 있을 경우 하나의 NULL값으로 그룹화)
✔️ 특정한 테이블에서 특정한 조건을 만족하는 데이터를 추출한 후 특정한 조건을 만족한 그룹화된 특정 열 및 집계 함수를 나타내라는 뜻
SELECT 그룹화할 열 이름1, 집계함수 FROM 테이블명 WHERE 조건절 GROUP BY 열 이름1 HAVING 집계 함수 조건;
✔️ HAVING은 WHERE 조건절과 마찬가지로 조건을 주는 역할을 함
✔️ WHERE 조건절과의 차이점 : HAVING은 그룹화된 변수에 대해 조건을 준다
✔️ 그룹화 필터링 후 데이터를 정렬할 때 ORDER BY절 사용 가능
** 문장 순서 SELECT 열 이름 FROM 테이블명 WHERE 조건절(개별 행에 대한 필터링) GROUP BY 열 이름 HAVING 조건(그룹화된 변수에 대한 필터링) ORDER BY 열 이름;
✔️ WHERE 조건절의 조건은 데이터가 그룹화되기 전에 필터링하고, HAVING 절의 조건은 데이터가 그룹화된 후에 필터링
✔️ WHERE 조건절에 의해 제외된 행은 그룹화할 때도 제외되기 때문에 HAVING절의 고려대상이 아님
글이 많은 도움이 되었습니다, 감사합니다.