(MySQL) 그룹화: GROUP BY, HAVING 조건 지정

여기에서는 GROUP BY 절을 사용하여 집계로 전달할 집합을 그룹으로 나누는 방법을 보여줍니다.

먼저 학생 테이블에서 학생 번호, 이름 및 학년을 조회합니다.

mysql> 학생에서 학분, 이름, s_year 선택;


표의 입학번호, 이름, 등급

등록된 등급(s_year)은 다음과 같습니다.

mysql> 학생 GROUP BY s_year에서 s_year 선택;


GROUP BY 절을 사용하여 학급당 학생 수를 찾습니다.

DISTINCT 구문을 사용한 것과 같은 결과를 얻었습니다. GROUP BY에 컬럼을 지정하여 그룹화할 경우, 지정된 컬럼에 동일한 값을 가진 행을 그룹화합니다.

그러나 DISTINCT를 사용하여 중복을 제거하는 것과 GROUP BY 절을 사용하여 그룹화하는 것에는 차이가 있습니다.

GROUP BY 문을 사용할 때 집계 함수와 함께 가장 일반적으로 사용됩니다.

다음은 집계 함수 COUNT 함수를 사용하여 학급별 학생 수를 반환하는 구문입니다.

mysql> s_year 선택, COUNT(s_year)
학생 GROUP BY s_year;


SQL: 클래스당 학생 수 찾기

반응형


HAVING 구문으로 조건 지정

집계 함수는 WHERE 절에 지정할 수 없습니다.

예를 들어 직원 수가 3인 등급을 인쇄하기 위해 다음 SQL 문을 생성했다고 가정합니다.

학생의 s_year, COUNT(s_year) 선택
WHERE COUNT(s_year)=3
GROUP BY s_year;


WHERE 절을 사용하여 집계 함수에 조건을 지정할 수 없습니다.

HAVING 절을 사용하여 집계 함수에 대한 조건을 지정할 수 있습니다.

학생의 s_year, COUNT(s_year) 선택
s_year로 그룹화
HAVING COUNT(s_year)=3;


GROUP BY 및 HAVE

ORDER BY는 출력 값을 그룹으로 정렬하는 데 사용할 수 있습니다.

다음 코드는 학급당 학생 수가 가장 많은 학급을 정렬하여 출력하는 SQL 문입니다.

학생의 s_year, COUNT(s_year) 선택
s_year로 그룹화
COUNT(s_year)로 주문;


GROUP BY 결과 정렬

위에서 HAVING 조건을 지정하는 GROUO BY 절과 ORDER BY를 사용하여 그룹 결과를 정렬하는 MySQL 구문에 대해 설명했습니다.