Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[MySQL] - HAVING, WITH ROLLUP (GOROUP BY) 본문

DB/MySQL

[MySQL] - HAVING, WITH ROLLUP (GOROUP BY)

luke-king 2024. 6. 2. 18:22

 

 

 

 

 

[MySQL] - HAVING, WITH ROLLUP (GOROUP BY)

오늘은 GROUP BY와 함께 쓰는 HAVING, WITH ROLLUP에 대해 정리하려 한다.

 

 

 

 

 

HAVING

  • WHERE 과 비슷한 개념으로 조건을 제한한다.
  • 집계 함수에 대해서 조건 제한하는 편리한 개념을 제공한다.
  • HAVING절은 반드시 GROUP BY절 다음에 나와야 한다.

 

 

그럼 바로 예시를 들어 보겠다.

 

✔️<예시 HAVING>

SELECT country, MAX(population)
FROM world
GROUP BY country
HAVING MAX(population) > 60000000

각 country 컬럼의 population 컬럼 최대값들을 추출하는데 population > 60000000 인 조건에 충족한 값들만 추출한다.

 

<결과>

HAVING 조건 쓰기 전 값
HAVING MAX(population) > 60000000

 

결과를 비교해 보면 첫번째 결과 HAVING을 쓰기 전에는 모든 population 최대값 들이 나온 걸 확인할 수 있다.

하지만 두번째 결과 HAVING을 사용해 HAVING MAX(population) > 60000000의 조건에 충족한 값들만 나온 걸 확인할 수 있다.

 

 

 

 

 

WITH ROLLUP

  • 총합 또는 중간합계가 필요할 경우 사용한다.
  • GROUP BY절과 함께 WITH ROLLUP을 사용한다.
  • SUM, AVG 등 사용 가능

 

 

✔️<예시 WITH ROLLUP (전체 총계)>

SELECT country, SUM(population)
FROM world
GROUP BY country WITH ROLLUP

각 coyntry 컬럼의 population 컬럼 값들을 합하여 총합을 나타낸다.

(중복되는 country컬럼이 있다면 a = 100, a = 200 이 둘을 합하여 a = 300으로 나오며 모든 country컬럼의 값을 합한 결과를 보여준다.)

 

 

<결과>

WITH ROLLUP(전체 총계)

 

결과를 확인해 보면 마지막 행에 총합계가 출력된 걸 확인할 수 있다.

 

 

✔️<예시 WITH ROLLUP (부분 소계)>

SELECT country, city, SUM(population)
FROM world
GROUP BY country, city WITH ROLLUP

위 내용과 같지만 city라는 컬럼이 하나 추가되어 city컬럼 종류에 따라 값들이 나오며 총합이 나온다.

 

 

<결과>

WITH ROLLUP (부분 소계)

 

결과를 확인해 보면 각 country컬럼의 다른 city 값들과 population 값들을 각각 출력하며 마지막으로는 

중복된 country 컬럼 값의 합을 보여주고 최종적으로는 모든 값들을 합한 값을 출력한다.