SQL/MySQL

MySQL COUNT 함수 특정 값 개수 세기

진리뷰 2023. 9. 8. 09:00
반응형

 
 

MySQL-COUNT-함수-특정-값-개수-세기-썸네일
COUNT 함수 설명

 
 
이 글은 MySQL에서 행/데이터 개수를 셀 때 사용하는 COUNT 함수 설명과 예시를 담은 글입니다.
 
 

 

MySQL COUNT 함수

 

  • SELECT: 테이블 내 모든/특정 데이터 개수 세기 가능.
  • WHERE: COUNT() 값을 조건으로 데이터 필터링 가능.

이로써 데이터 탐색과 오입력 여부 확인, 필터링 등이 가능합니다.
 

 

 

MySQL COUNT 함수 사용 방법(문법)

 

 

COUNT(*), 전체(모든) 행 개수 세기

 

  • 별표(*)

'전체/모든'이라는 의미가 있습니다. 그래서 NULL 값을 포함하여 개수를 셉니다.

 

MySQL-전체-행-COUNT-사용-방법
전체 행 COUNT

 

 

 

특정 컬럼의 행 개수 세기

 

위와 달리, NULL 값은 제외하고 개수를 셉니다.

*NULL 값 관련 글 MySQL NULL 값 치환(대체), COALESCE 함수 예시

 

MySQL-특정-컬럼-데이터-개수-COUNT-사용-방법
특정 컬럼 행 COUNT

 
 

 

중복 없이 특정 컬럼의 행 개수 세기

 

  • DISTINCT

중복 없이, NULL 값을 제외해서 개수를 셉니다.

*DISTINCT 관련 글 MySQL 중복 제거 DISTINCT 쉬운 사용법 예시

 

중복-없이-특정-컬럼-행-개수-찾기-COUNT-DISTINCT-사용-방법
중복 없이 특정 컬럼 행 개수 COUNT

 

 

 

특정 컬럼에서 특정 값 개수 세기

 

WHERE 조건절로 특정 컬럼에서 특정 값의 개수를 셉니다.
찾으려는 값이 문자라면, '데이터'처럼 따옴표로 감쌉니다.

반면 숫자라면, 따옴표 없이 숫자만 입력합니다.

*특정 문자 찾기 관련 글 MySQL LIKE 여러 개 검색(LIKE IN), REGEXP 사용 방법

 

특정-컬럼-특정-데이터-개수-COUNT-WHERE-사용-방법
특정 컬럼, 특정 데이터 개수 COUNT WHERE

 

 

 

컬럼 조합 개수 세기

 

COUNT 함수는 아래처럼 하나 이상의 컬럼을 입력할 수 있습니다.

이는 N개의 컬럼을 바탕으로, 데이터 조합의 개수를 셀 때 사용합니다.

SELECT COUNT(expr, expr, ...)
FROM 테이블명;

 

 

사용자 정보가 담긴 user_info 테이블을 예시로 봅시다.

  • user_id: 개별 사용자 아이디, 고윳값(중복 X)
  • action_code: 사용자 행동 별 코드

 

user_info
user_id action_code
E12345 111
E12345 222
B09876 333
D24680 999
O54321 333

 

 

위 테이블처럼, 만약 사용자들이 했던 특정 행동 데이터를 갖고 있다고 생각해 봅시다.

모두 다른 사용자라도, 같은 행동을 했을 수 있습니다. 혹은 한 사용자가 여러 행동들을 했을 수 있습니다.

이처럼 모든 경우의 수를 세고 싶다면, 사용자와 행동의 조합을 바탕으로 COUNT 하면 됩니다.

SELECT COUNT(DISTINCT user_id) AS user_id_cnt
     , COUNT(DISTINCT action_code) AS action_code_cnt
     , COUNT(user_id, action_code) AS comb_cnt
FROM user_info;

 

user_id_cnt action_code_cnt comb_cnt
4 4 5

 

 

어떻게 이런 결과가 나오는지, 과정을 풀어봅시다.

SELECT user_id
     , action_code
     , COUNT(user_id, action_code) AS comb_cnt
FROM user_info
GROUP BY user_id, action_code;

 

user_info
user_id action_code comb_cnt
E12345 111 1
E12345 222 1
B09876 333 1
D24680 999 1
O54321 333 1

 

  • user_id_cnt: user_id를 중복 없이 COUNT

>> 4 (=E12345, B09876, D24680, O54321)

  • action_code_cnt: action_code를 중복없이 COUNT

>> 4 (=111, 222, 333, 999)

  • comb_cnt: user_id와 action_code를 조합한 경우의 수

>> 5 (1+1+1+1+1)

 

 

 

MySQL COUNT 함수 예시

 
총 8개의 행(ROW)으로 이루어진 테이블(score)입니다.

COUNT-샘플-테이블
샘플 테이블 score

 

 

 

전체(모든) 행 개수 세기 예시

 

SELECT COUNT(*) FROM score;
COUNT(*)
8

 
 

 

특정 컬럼의 행 개수 세기 예시

 
총 8개의 행이지만, music 컬럼의 NULL 값 2개를 제외했습니다.

SELECT COUNT(music) FROM score;
COUNT(music)
6

 
 

 

중복 없이 특정 컬럼의 행 개수 세기 예시


music 컬럼의 중복 값인 87을 한 번만 count 하고 NULL값은 제외했습니다.

SELECT COUNT(DISTINCT(music)) FROM score;
COUNT(music)
5

 
 

 

특정 컬럼에서 특정 값 세기 예시

 

music 컬럼에서 숫자 데이터 87을 count 했습니다.

SELECT COUNT(music) FROM score WHERE music=87;
COUNT(music)
2

 

반응형
top