কম্পিউটার টিউটোরিয়াল

MySQL에서 중복 튜플 찾기와 개수 세기 (GROUP BY HAVING)

GROUP BY와 HAVING COUNT(*) > N을 사용하면 중복된 행을 찾아 개수와 함께 출력할 수 있습니다.

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable (
    -> Id INT,
    -> Name VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.80 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Chris');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES(101,'David');
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable VALUES(101,'Mike');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Carol');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Chris');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Chris');
Query OK, 1 row affected (0.10 sec)

데이터 조회

mysql> SELECT * FROM DemoTable;
+------+-------+
| Id   | Name  |
+------+-------+
|  100 | Chris |
|  101 | David |
|  101 | Mike  |
|  100 | Carol |
|  100 | Chris |
|  100 | Chris |
+------+-------+
6 rows in set (0.00 sec)

3회 이상 중복된 튜플 찾기

mysql> SELECT Id, Name, COUNT(*) AS t
    -> FROM DemoTable
    -> GROUP BY Id, Name
    -> HAVING COUNT(*) > 2;
+------+-------+---+
| Id   | Name  | t |
+------+-------+---+
|  100 | Chris | 3 |
+------+-------+---+
1 row in set (0.03 sec)

핵심: GROUP BY Id, Name으로 (Id, Name) 조합별 그룹핑, HAVING COUNT(*) > 2로 3개 초과만 필터링. WHERE은 그룹핑 전 필터, HAVING은 그룹핑 후 필터입니다.

  1. MySQL-এ তারিখ অনুযায়ী গ্রুপ করে ডুপ্লিকেট মান গণনা করা

  2. MySQL-এ ডুপ্লিকেট আইডির গড় বের করে সর্বোচ্চ গড়見せ वाले আইডি খুঁজে বের করা (HAVING AVG)

  3. MySQL-এ GROUP BY ও COUNT একসাথে ব্যবহার করে ডুপ্লিকেট গ্রুপ করেই ম্যাক্স মান বের করা

  4. MySQL-এ GROUP BY HAVING ব্যবহার করে ডুপ্লিকেট কলাম মান বের করা