Articles

Sql GROUP BY 및 예제가있는 HAVING 절

SQL Group by 절은 무엇입니까?

GROUP BY 절은 동일한 값을 갖는 행을 그룹화하는 데 사용되는 SQL 명령입니다. GROUP BY 절은 SELECT 문에 사용됩니다. 선택적으로 집계 함수와 함께 사용되어 데이터베이스에서 요약 보고서를 생성합니다. 이것이 데이터베이스의 데이터를 요약 한 것입니다.

GROUP BY 절을 포함하는 쿼리는 그룹화 된 쿼리라고하며 그룹화 된 모든 항목에 대해 단일 행만 반환합니다.,

Sql GROUP BY Syntax

이제 SQL GROUP BY 절이 무엇인지 알았으므로 기본 group by query 에 대한 구문을 살펴 보겠습니다.

SELECT statements... GROUP BY column_name1 ;

여기

  • “문을 선택합니다…”는 표준 SQL SELECT 명령 쿼리입니다.
  • “group BY column_name1″은 column_name1 을 기반으로 그룹화를 수행하는 절입니다.
  • “”는 선택 사항이며 그룹화가 둘 이상의 열에서 수행 될 때 다른 열 이름을 나타냅니다.
  • “”는 선택 사항이며 GROUP BY 절의 영향을받는 행을 제한하는 데 사용됩니다., WHERE 절과 유사합니다.

그룹화하여 단일 열

하기 위해서 이해하는 데 도움이의 효과 SQL 그룹에 의해 절를 실행하여 간단한 쿼리를 반환하는 모든 성별 항목에서 멤버들이다. 성별에 대한 고유 한 값을 얻고 싶다고 가정 해 보겠습니다. 우리가 사용할 수 있습니다 다음과 같은 쿼리-

SELECT `gender` FROM `members` GROUP BY `gender`;

실행하면 위에서 스크립트 MySQL 작업에 대한 Myflixdb 우리에게 다음과 같은 결과를 보여줍니다.,


gender

Female


Male


참고 두 개의 결과 만 반환되었습니다. 왜냐하면 우리는 남성과 여성의 두 가지 성별 유형 만 가지고 있기 때문입니다. SQL 의 GROUP BY 절은 모든”남성”멤버를 함께 그룹화하고 그에 대한 단일 행만 반환했습니다. 그것은”여성”회원들과 똑같이했습니다.

그룹을 사용하여 여러 열

가는 우리가 얻고 싶은 목록의 영화 category_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 우리에게 다음과 같은 결과를 다음과 같습니다.

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 와 릴리스 된 연도가 둘 이상의 행에 대해 동일한 경우 중복으로 간주되며 하나의 행만 표시됩니다.

그룹화 및 집계 함수

데이터베이스에서 남성과 여성의 총 수를 원한다고 가정합니다. 아래에 표시된 다음 스크립트를 사용하여 그렇게 할 수 있습니다.

SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;

실행하면 위에서 스크립트 MySQL 작업에 대한 myflixdb 우리에게 다음과 같은 결과를 보여줍니다.,

gender COUNT('membership_number')
Female 3
Male 5

결과는 아래와 같은 그룹에 의해 모든 독특한 성 값 게시 및 번호의 그룹화 행를 이용하여 계산 개수 집계 기능입니다.

제한 쿼리를 사용하여 결과를 갖는 절

그것은 항상 우리는 실행하고 싶을 것이 그룹에 모든 데이터에 지정된 테이블. 우리의 결과를 특정 주어진 기준으로 제한하기를 원할 때가있을 것입니다. 그러한 경우에,우리가 사용할 수 있는 절

한다고 가정한 모든 출 년 영화를 위한 카테고리의 id8., 우리는 우리의 결과를 달성하기 위해 다음 스크립트를 사용할 것입니다.

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 인 영화 만 우리 그룹 BY 절의 영향을 받았습니다.

요약

  • GROUP BY 절 SQL 은 동일한 값을 가진 행을 그룹화하는 데 사용됩니다.
  • GROUP BY 절은 SQL SELECT 문과 함께 사용됩니다.,
  • GROUP BY 절에 사용 된 SELECT 문은 열 이름,집계 함수,상수 및 표현식 만 사용할 수 있습니다.
  • Sql Having 절은 GROUP BY 절에 의해 반환 된 결과를 제한하는 데 사용됩니다.
  • Mysql GROUP BY 절은 여러 레코드에서 데이터를 수집하고 하나 이상의 열에 의해 설정된 레코드를 반환하는 데 사용됩니다.