"DB 중복 개수 확인"의 두 판 사이의 차이

 
(사용자 2명의 중간 판 10개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{테스트|MySQL}}
;중복 개수 확인
;중복 개수 확인


==문제상황==
==문제상황==
아래와 같은 테이블에서 A, B, C, … 각각의 개수를 구하고 싶다.
아래와 같은 테이블에서 A, B, C, … 각각의 개수를 구하고 싶다.
<source lang='dos'>
<syntaxhighlight lang='console'>
mysql> SELECT * FROM jmtable;
mysql> SELECT * FROM jmtable;
+----+-----+
+----+-----+
18번째 줄: 19번째 줄:
+----+-----+
+----+-----+
8 rows in set (0.00 sec)
8 rows in set (0.00 sec)
</source>
</syntaxhighlight>


==해결방법==
==해결방법==
;모든 값의 개수 세기
{{소스헤더|모든 값의 개수 세기}}
<source lang='dos'>
<syntaxhighlight lang='mysql'>
SELECT 컬럼명, COUNT(*) FROM 테이블명 GROUP BY 컬럼명;
</syntaxhighlight>
<syntaxhighlight lang='console'>
mysql> SELECT str, COUNT(*) FROM jmtable GROUP BY str;
mysql> SELECT str, COUNT(*) FROM jmtable GROUP BY str;
+-----+----------+
+-----+----------+
34번째 줄: 38번째 줄:
+-----+----------+
+-----+----------+
5 rows in set (0.00 sec)
5 rows in set (0.00 sec)
</source>
</syntaxhighlight>


;중복(2개 이상)인 건만 세기
{{소스헤더|중복(2개 이상)인 건만 세기}}
<source lang='dos'>
<syntaxhighlight lang='mysql'>
SELECT 컬럼명, COUNT(*) FROM 테이블명 GROUP BY 컬럼명 HAVING COUNT(*)>1;
</syntaxhighlight>
<syntaxhighlight lang='console'>
mysql> SELECT str, COUNT(*) FROM jmtable GROUP BY str HAVING COUNT(*)>1;
mysql> SELECT str, COUNT(*) FROM jmtable GROUP BY str HAVING COUNT(*)>1;
+-----+----------+
+-----+----------+
46번째 줄: 53번째 줄:
+-----+----------+
+-----+----------+
2 rows in set (0.00 sec)
2 rows in set (0.00 sec)
</source>
</syntaxhighlight>


==같이 보기==
==같이 보기==
*[[DB 중복 처리]]
*[[DB 중복 처리]]
*[[SQL 중복된 행 확인]]


[[분류: SQL]]
[[분류: SQL]]
[[분류: MySQL]]
[[분류: 중복]]
[[분류: GROUP BY]]

2021년 11월 27일 (토) 02:32 기준 최신판

중복 개수 확인

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)
중복(2개 이상)인 건만 세기
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 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}