IT's Jenna

Mysql - GROUP BY & CASE 본문

Mysql

Mysql - GROUP BY & CASE

developer Jenna 2021. 1. 21. 12:58

GROUP BY

  • sql에서 그룹별로 개수를 알고 싶을 때 count함수와 함께 사용하는 것이 GROUP BY 이다.

설명보다 예시를 보면 명확이 이해가 될 것이기 때문에 바로 예시로 넘어가도록 하겠다.

다음과 같이 Type 별로 정리가 되어있는 group1 테이블을 하나 만들었다.

 

<Table. gruop1>

위의 그래프에서 Type 별 개수를 확인하고 싶은 경우 아래와 같이 COUNT함수와 함께 GROUP BY를 사용해서 type별로 묶어준다.

결과는 아래 그림과 같다.

SELECT group1.type, COUNT(group1.name) AS cnt FROM group1 GROUP BY type;

<GROUP BY 결과>

 

GROUP BY와 함께 사용할 수 있는 조건식이 2개가 있다. 하나는 이전에 포스팅에서 언급했던 WHERE이고, 다른 하나는 HAVING이다. 두 조건식의 차이점은 WHERE은 그룹화하기 전에 조건을 주는 것이고, HAVING은 그룹화하고 나서 조건을 주는 것이다.

 

아래 그림은 WHERE과 HAVING의 사용을 3가지 케이스로 나눈 것이다.

 

  • Case 1. 그룹화 전 WHERE을 사용해서 조건 적용
  • Case 2. 그룹화 후 HAVING으로 조건 적용
  • Case 3. 그룹화 전 WHERE, 그룹화 후 HAVING 조건 적용

<WHERE & HAVING>
<Case 결과>

CASE

sql에서도 java script의 switch처럼 조건문을 달아주는 쿼리인 CASE가 있다. CASE는 다음과 같이 사용한다.

Case 칼럼명
     WHEN 값1 THEN 출력1
     WHEN 값2 THEN 출력2
     ELSE 출력3
END

예제를 한번 보자.

SELECT CASE AAA WHEN '1' THEN a WHEN '2' THEN b ELSE c END FROM table_name;

설명 - AAA 칼럼의 값이 '1' 이면 a, '2' 이면 b, 둘 다 아닐 경우 c를 출력

 

 

<참고>

https://extbrain.tistory.com/56

https://wkdtjsgur100.github.io/groupby-having/

link2me.tistory.com/516

'Mysql' 카테고리의 다른 글

Mysql 이벤트 스케쥴러 (Event Scheduler)  (0) 2021.06.23
Mysql - LIMIT  (0) 2021.05.12
Mysql - group_concat  (0) 2021.04.26
Mysql - ORDER BY & ALIAS  (0) 2021.04.26
Mysql 기본  (0) 2021.01.21
Comments