예제가 포함된 SQL GROUP BY 및 HAVING 절
SQL Group by 절이란 무엇입니까?
GROUP BY 절은 다음 작업에 사용되는 SQL 명령입니다. 동일한 값을 갖는 그룹 행. GROUP BY 절은 SELECT 문에서 사용됩니다. 선택적으로 집계 함수와 함께 사용되어 데이터베이스에서 요약 보고서를 생성합니다.
그것이 바로 그 일입니다. 데이터 요약 데이터베이스에서.
GROUP BY 절이 포함된 쿼리를 그룹화된 쿼리라고 하며 모든 그룹화된 항목에 대해 단일 행만 반환합니다.
SQL GROUP BY 구문
이제 SQL GROUP BY 절이 무엇인지 알았으니 쿼리별 기본 그룹 구문을 살펴보겠습니다.
SELECT statements... GROUP BY column_name1[,column_name2,...] [HAVING condition];
여기를 클릭하십시오.
- "SELECT 문..."은 표준 SQL SELECT 명령 쿼리입니다.
- "GROUP BY 컬럼_이름1"는 그룹을 수행하는 절입니다.ping column_name1을 기준으로 합니다.
- “[,column_name2,…]”는 선택 사항이며, 그룹화 시 다른 열 이름을 나타냅니다.ping 두 개 이상의 열에 대해 수행됩니다.
- "[HAVING 조건]"은 선택 사항입니다. GROUP BY 절의 영향을 받는 행을 제한하는 데 사용됩니다. 이는 다음과 유사합니다. WHERE 절.
Grouping 를 사용하여 단일 칼럼
SQL Group By 절의 효과를 이해하는 데 도움이 되도록 멤버 테이블의 모든 성별 항목을 반환하는 간단한 쿼리를 실행해 보겠습니다.
SELECT `gender` FROM `members` ;
| gender |
|---|
| Female |
| Female |
| Male |
| Female |
| Male |
| Male |
| Male |
| Male |
| Male |
성별에 대한 고유한 값을 얻고 싶다고 가정해 보겠습니다. 다음 쿼리를 사용할 수 있습니다.
SELECT `gender` FROM `members` GROUP BY `gender`;
위 스크립트를 실행하면 MySQL 워크 벤치 Myflixdb와 비교한 결과는 다음과 같습니다.
| gender |
|---|
| Female |
| Male |
두 개의 결과만 반환되었습니다. 이는 남성과 여성의 두 가지 성별 유형만 있기 때문입니다. SQL의 GROUP BY 절은 모든 "남성" 멤버를 그룹화하고 이에 대해 단일 행만 반환했습니다. '여성' 멤버들 역시 마찬가지였다.
Grouping 사용 여러 열
영화 카테고리 ID와 해당 영화가 개봉된 연도 목록을 얻고 싶다고 가정해 보겠습니다.
이 간단한 쿼리의 출력을 살펴보겠습니다.
SELECT `category_id`,`year_released` FROM `movies` ;
| category_id | year_released |
|---|---|
| 1 | 2011 |
| 2 | 2008 |
| NULL | 2008 |
| NULL | 2010 |
| 8 | 2007 |
| 6 | 2007 |
| 6 | 2007 |
| 8 | 2005 |
| NULL | 2012 |
| 7 | 1920 |
| 8 | NULL |
| 8 | 1920 |
위 결과에는 중복된 내용이 많습니다.
SQL에서 그룹별을 사용하여 동일한 쿼리를 실행해 보겠습니다.
SELECT `category_id`,`year_released` FROM `movies` GROUP BY `category_id`,`year_released`;
위 스크립트를 실행하면 MySQL myflixdb에 대해 Workbench를 사용한 결과는 아래와 같습니다.
| category_id | year_released |
|---|---|
| NULL | 2008 |
| NULL | 2010 |
| NULL | 2012 |
| 1 | 2011 |
| 2 | 2008 |
| 6 | 2007 |
| 7 | 1920 |
| 8 | 1920 |
| 8 | 2005 |
| 8 | 2007 |
GROUP BY 절은 카테고리 ID와 출시 연도 모두에서 작동하여 식별합니다. 유일한 위 예의 행.
카테고리 ID는 동일하지만 출시 연도가 다른 경우 행은 고유한 행으로 처리됩니다. 카테고리 ID와 출시 연도가 둘 이상의 행에서 동일한 경우 중복된 것으로 간주되며 단 하나의 행만 있습니다. 표시됩니다.
Grouping 집계 함수
데이터베이스에 있는 남성과 여성의 총 수를 원한다고 가정해 보겠습니다. 아래에 표시된 스크립트를 사용하여 그렇게 할 수 있습니다.
SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;
위 스크립트를 실행하면 MySQL myflixdb에 대한 워크벤치의 결과는 다음과 같습니다.
| gender | COUNT('membership_number') |
|---|---|
| Female | 3 |
| Male | 5 |
아래 결과는 게시된 고유한 성별 값별로 그룹화되었으며, 그룹화된 행 수는 COUNT 집계 함수를 사용하여 계산됩니다.
다음을 사용하여 쿼리 결과 제한 지키는 절
우리가 항상 그룹 공연을 하고 싶어하는 것은 아닙니다.ping주어진 테이블의 모든 데이터에 대해 검색을 수행할 수도 있지만, 특정 기준에 맞는 데이터만 검색하고 싶을 때가 있습니다. 이러한 경우 HAVING 절을 사용할 수 있습니다.
영화 카테고리 id 8에 대한 모든 출시 연도를 알고 싶다고 가정해 보겠습니다. 우리는 다음 스크립트를 사용하여 결과를 얻습니다.
SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;
위 스크립트를 실행하면 MySQL Myflixdb에 대한 워크벤치를 사용하면 아래에 표시된 결과가 나타납니다.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 9 | Honey mooners | John Schultz | 2005 | 8 |
| 5 | Daddy's Little Girls | NULL | 2007 | 8 |
카테고리 ID가 8인 영화만 GROUP BY 절의 영향을 받았습니다.
제품 개요
- GROUP BY 절 SQL은 동일한 값을 가진 행을 그룹화하는 데 사용됩니다.
- GROUP BY 절은 다음과 함께 사용됩니다. SQL SELECT 문.
- GROUP BY 절에 사용되는 SELECT 문은 열 이름, 집계 함수, 상수 및 표현식을 포함하는 경우에만 사용할 수 있습니다.
- SQL Have 절은 GROUP BY 절에서 반환되는 결과를 제한하는 데 사용됩니다.
- MYSQL GROUP BY 절은 여러 레코드에서 데이터를 수집하고 하나 이상의 열로 레코드 집합을 반환하는 데 사용됩니다.
