CAFE

그룹쿼리

GROUP BY 절, HAVING 절

작성자황정식|작성시간11.02.28|조회수419 목록 댓글 0

● GROUP BY 절

: 특정 범위별 집계 데이터를 얻기 위해서는 바로 '특정 범위'를 지정해주어야 한다. 이를 "그룹을 짓는다"라는 의미로 그룹핑이라고도 한다. 이러한 특정 범위는 바로 GROUP BY 절을 사용해서 지정할 수 있다. 다음은 GROUP BY절을 사용할때 알아두어야할 사항이다.

 

1. SQL 함수에 포함되는 집계 함수는 말 그대로 데이터를 집계하는 기능을 수행하는 함수로, COUNT, SUM, MAX, MIN, AVG, STDDEV, VARINACE 등이 있다.

 

2. 특정 컬럼값이나 표현식을 단위로 집계성 데이터를 보기 위해서는 SELECT 문장에서 GROUP BY절과 함께 집계 함수를 사용한다.

 

3. 집계 함수 이외에 SELECT 절에 오는 컬럼이나 값은 상수를 제외하고 모두 GROUP BY 절에 명시되어야한다.

 

4. GROUP BY 절에는 한 개 이상의 컬럼이나 값이 올 수 있다.

 

5. 그룹핑한 결과를 일정한 순서로 보고자 할 경우 ORDER BY 절을 사용한다. ORDER BY 절은 GROUP BY 절 다음에 위치해야 하며, ORDER BY 절에 명시하는 컬럼이나 값은 GROUP BY 절에서 명시한 컬럼이나 값의 순서와는 달라도 상관없으나 GROUP BY 절에 명시한 컬럼이나 값 이외의 것은 올 수 없다.

 

6. GROUP BY 절을 사용한 SQL 문장에서도 WHERE 조건을 사용할 수 있으며, 이 때 WHERE 절은 GROUP BY 절 앞에 위치해야 한다. 또한 WHERE 조건절에 사용된 컬럼이나 값은 GROUP BY 절에 명시된 컬럼이나 값과 달라도 상관없다. 즉 처리순서로 본다면 해당 문장에서 WHERE 조건이 가장 먼저 처리되고 그 다음에 GROUP BY 및 집계 함수가 처리된다.

 

 

 

● HAVING 절

: HAVING절은 GROUP BY 절과 같이 사용되어 SELECT 문장에서 집계함수를 사용한 조건을 명시하는 절이다. 즉, 조건에 집계 함수의 결과가 필요한 경우에 한해 이를 HAVING 절에 명시한다. 한마디로 HAVING 절은 집계 함수를 위한 조건절, 집계 함수용 WHERE 절이라 할 수 있으며, 항상 GROUP BY 절과 같이 사용되어야 한다.

 

1. HAVING 절은 WHERE 조건 이외에 집계 함수의 결과로 조건을 주고자 할 때 사용되며, GROUP BY 절과 함께 사용된다.

 

2. HAVING 절에는 일반적으로 집계 함수나 상수가 사용된 조건을 명시하는데 GROUP BY 절에 명시한 컬럼도 조건으로 명시할 수는 있다. 하지만 집계 함수는 오직 HAVING 절에서만 조건으로 사용될 수 있다.

 

3. WHERE 절과 HAVING 절을 동시에 사용할 수 있는데, 일반적인 조건은 WHERE 절에 명시하고, 집계 함수가 포함된 조건은 HAVING 절에 명시한다.

실제로 SQL 문장의 실행순서를 보면 WHERE 조건이 먼저 처리되고, 이 조건으로 걸러진 데이터들을 대상으로 그룹핑이 수행되고, 그 이후에 HAVING 조건을 처리한다.

 

4. HAVING 절의 위치는 GROUP BY 절의 이전 혹은 이후 어디에나 올 수 있다. GROUP BY 절 이전에 오든지 이후에 오든지 그 결과에는 아무런 영향을 주지 않는다.

 

 

 

 

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼