반응형

 

예를들어 이런 테이블 A가 있다고 가정해봅시다.

 

국적 성별 나이
한국 11
미국 24
한국 30
한국 43
캐나다 16
미국 33
한국 29
미국 25
캐나다 51

 

그리고 저는 이런 결과를 도출하고 싶었습니다.

 

한국 미국 캐나다 10대 20대 30대 40대
? ? ? ? ? ? ? ? ? ?

 

이 때 하나의 쿼리로 group by 절을 이용하여 결과값을 도출하려 했으나

아무리 해도 방법이 떠오르지 않아 애를 먹던 중

 

https://blog.shovelman.dev/841

 

[삽잡이::sql] 두 종류의 COUNT를 한번에 얻어보자! 특정 조건 Count

Query문을 작성하며 원하는 결과가 포함된 데이터의 개수를 구하기 위해 COUNT()를 사용하곤 합니다. 그런데, 예를 들어봅시다. 이와 같은 Table이 있는데, 해당 Table의 전체 개수와 Age가 10대인 데이

blog.shovelman.dev

 

이 분의 블로그를 보고 정답을 알았습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT 
    COUNT(*) as 총
  , COUNT(IF(국적 = '한국', 국적, NULL)) as 한국
  , COUNT(IF(국적 = '미국', 국적, NULL)) as 미국
  , COUNT(IF(국적 = '캐나다', 국적, NULL)) as 캐나다
  , COUNT(IF(성별 = '남', 성별 , NULL)) as 남
  , COUNT(IF(성별 = '여', 성별 , NULL)) as 여
  , COUNT(IF(나이 >= 10 AND 나이 < 20, 나이 , NULL)) as 10대
  , COUNT(IF(나이 >= 20 AND 나이 < 30, 나이 , NULL)) as 20대
  , COUNT(IF(나이 >= 30 AND 나이 < 40, 나이 , NULL)) as 30대
  , COUNT(IF(나이 >= 40 AND 나이 < 50, 나이 , NULL)) as 40대
FROM
    A;
 
 
cs

 

이런식으로 작성해주시면

group by 절 없이, 여러개의 조건으로 한번에 통계를 추출할 수 있습니다.

 

도움을 주신 shovelman 님께 감사드립니다.

반응형

+ Recent posts