새소식

데이터베이스/mysql

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

  • -

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

 

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

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이 출력되게 됩니다.

 

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

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

위의 테이블에서 재고수가 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 필드에서 중복되는 이름들을 제거한 테이블만 만들게 되고

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

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

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