새소식

데이터베이스/mysql

[mysql] 테이블의 데이터 개수 세기, 중복 데이터 제거(count 함수, DISTINCT)

  • -

우선 데이터의 개수를 세는 방법을 알아보겠습니다

 

count 함수

여기에 '*'를 이용하여 전체 데이터의 개수를 출력하는데 많이 사용됩니다

1
SELECT count(*FROM TABLE;
cs

위와 같이 테이블의 전체 레코드의 개수를 구할 수 있습니다.

 

테이블 이름은 stocks 입니다.

ID NAME STOCK
A123 pizza 31
A152 chicken 50
B531 hamburger 27

 

1
SELECT count(*FROM stocks;
cs

이렇게 하면 stock 테이블의 레코드수를 구할 수 있습니다.

레코드 수는 3이므로 3이 출력되게 됩니다.

 

where을 이용한 특정 레코드 개수 구하기

*를 이용하면 전체 레코드 수를 구할 수 있습니다.

그런데 특정 조건을 만족하는 레코드 개수가 구하고 싶다면?? 이런 경우가 더 많겠죠??

위의 테이블에서 재고수가 30개 이상인 상품의 개수를 구하고 싶다면 다음과 같이 작성할 수 있어요

1
SELECT count(*FROM stocks WHERE stock >= 30;
cs

 

이렇게 하면 우선 where절의 조건에 이에 pizza와 chicken만 추출되게 되요

ID NAME STOCK
A123 pizza 31
A152 chicken 50

다음과 같은 테이블이 추출됩니다. 여기서 count(*)를 실행하게 되어 총 레코드 개수인 2를 출력합니다.

 

중복 데이터 제거한 개수 구하기

중복된 데이터는 제외한 개수를 구하고 싶다면 어떻게 할까요??

DISTINCT라는 것이 있습니다. '구분된' 이라는 뜻이죠.

만약 이름이  같은 상품을 제외한 개수를 알고 싶다면 다음과 같이 작성할 수 있습니다

1
SELECT count(DISTINCT NAME) FROM stocks;
cs

이러면 NAME 필드에서 중복되는 이름들을 제거한 테이블만 만들게 되고

거기서 개수를 구할 수 있습니다!!

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.