Sql 중복값 개수 세기 - sql jungboggabs gaesu segi

MySQL 에서 테이블에 중복된 값들의 갯수와 각각의 값을 찾아보는 쿼리입니다.

MySQL 쿼리

SELECT COUNT(컬럼A) AS cnt , 컬럼A FROM 테이블명
{조건구문}
Group by 컬럼A
HAVING COUNT(컬럼A) > 1

예시를 위해 아래와 같은 테이블이 있다고 가정하고( 테이블 이름은 carts 로 하겠습니다. ), 2번이상 구입한 사람의 이름과 구입횟수를 구해보는 쿼리를 만들어보겠습니다.

예시 테이블 (carts)

idnameproductsdate
1 민준 사과 2019-01-01
2 준서 2019-01-05
3 동현 2019-01-07
4 현준 딸기 2019-01-08
5 준서 딸기 2019-01-08
6 도현 복숭아 2019-01-09
7 민준 사과 2019-01-09
8 준서 복숭아 2019-01-09
9 도현 복숭아 2019-01-10
10 우진 바나나 2019-01-10

중복값 갯수와 값 구하기

위의 테이블 예제로 2번 이상 구입한 사람의 이름과 구입횟수를 검색하는 쿼리입니다.

SELECT name, COUNT(name) FROM carts
GROUP BY name
HAVING COUNT(name) > 1

실행결과는 다음과 같습니다.

중복값 구하기로 고생할 누군가에게 도움이 되었으면 좋겠습니다^^

안녕하세요?^^ 개발자라는 소리를 듣고 싶어 늦은 나이에 개발의 세계에 몸담게 된 Brad 라고 합니다. 아직 개발의 'ㄱ' 자도 모르지만, 개발을 배우면서 알게되는 것들을 림프에 정리해보려고 합니다. 저의 부족한 글이 누군가에게 조금이나마 도움이 되길 바랍니다.

중복 개수 확인

1 문제상황[ | ]

아래와 같은 테이블에서 A, B, C, … 각각의 개수를 구하고 싶다.

mysql> SELECT * FROM jmtable;
+----+-----+
| id | str |
+----+-----+
|  1 | A   |
|  2 | B   |
|  3 | A   |
|  4 | C   |
|  5 | C   |
|  6 | E   |
|  7 | D   |
|  8 | C   |
+----+-----+
8 rows in set (0.00 sec)

2 해결방법[ | ]

SELECT 컬럼명, COUNT(*) FROM 테이블명 GROUP BY 컬럼명;

mysql> SELECT str, COUNT(*) FROM jmtable GROUP BY str;
+-----+----------+
| str | COUNT(*) |
+-----+----------+
| A   |        2 |
| B   |        1 |
| C   |        3 |
| D   |        1 |
| E   |        1 |
+-----+----------+
5 rows in set (0.00 sec)

SELECT 컬럼명, COUNT(*) FROM 테이블명 GROUP BY 컬럼명 HAVING COUNT(*)>1;

mysql> SELECT str, COUNT(*) FROM jmtable GROUP BY str HAVING COUNT(*)>1;
+-----+----------+
| str | COUNT(*) |
+-----+----------+
| A   |        2 |
| C   |        3 |
+-----+----------+
2 rows in set (0.00 sec)

3 같이 보기[ | ]

  • DB 중복 처리
  • SQL 중복된 행 확인

[MS SQL] COUNT함수에서 distinct 사용하기, 중복된 값 제외하고 테이블 행 개수 세기

COUNT함수에서 distinct를 사용하여 중복된 값을 제외한 행의 개수를 세는 방법에 대해 알아보겠습니다.

다음 실습을 위해 실습 테이블을 만들었습니다. (+데이터 추가)

Sql 중복값 개수 세기 - sql jungboggabs gaesu segi

6개의 직업이 있습니다.

{

사원 : 1,

주임 : 2,

대리 : 3,

과장: 4,

차장 : 5,

부장 :6

}

count를 해보겠습니다.

실행 SQL

SELECT COUNT(*) as t_c, COUNT(job) as jo_c, COUNT(job_no) as jo_no_c FROM 가직업

Sql 중복값 개수 세기 - sql jungboggabs gaesu segi

총 개수를 구하는 것은 확인했습니다. 하지만 중복되는 데이터들이 많았죠.

중복을 없앤 데이터들의 개수를 확인하는 명령을 만들겠습니다. COUNT() 함수에 DISTINCT 를 추가합니다.

DISTINCT 연산자는 중복을 제거하는 연산자입니다.

실행 SQL

SELECT COUNT(DISTINCT job) as job_count, COUNT(DISTINCT job_no) as jo_no_count FROM 가직업

Sql 중복값 개수 세기 - sql jungboggabs gaesu segi

job에서 중복된 데이터를 제거하고 개수를 세어 결과로 출력합니다.

DISTINCT job

DISTINCT job_no

이번 글에서는 COUNT함수와 DISTINCT 연산자를 사용하여 중복없는 데이터에 대해 개수 세는 방법을 알아봤습니다.