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

잔글 (봇: Jmnote의 2019-12-19T06:31:39Z 에 작성한 559822 판으로 되돌림)
 
(다른 사용자 한 명의 중간 판 하나는 보이지 않습니다)
4번째 줄: 4번째 줄:
==문제상황==
==문제상황==
아래와 같은 테이블에서 A, B, C, … 각각의 개수를 구하고 싶다.
아래와 같은 테이블에서 A, B, C, … 각각의 개수를 구하고 싶다.
<source lang='console'>
<syntaxhighlight lang='console'>
mysql> SELECT * FROM jmtable;
mysql> SELECT * FROM jmtable;
+----+-----+
+----+-----+
19번째 줄: 19번째 줄:
+----+-----+
+----+-----+
8 rows in set (0.00 sec)
8 rows in set (0.00 sec)
</source>
</syntaxhighlight>


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


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


==같이 보기==
==같이 보기==
62번째 줄: 62번째 줄:
[[분류: MySQL]]
[[분류: 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 }}