Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में HAVING COUNT() से 3 या अधिक बार आने वाले डुप्लिकेट नाम प्रदर्शित करें

MySQL में किसी कॉलम में 3 या अधिक बार आने वाले डुप्लिकेट मानों को खोजने के लिए GROUP BY के साथ HAVING COUNT(*) >= 3 का उपयोग करें। यह डेटा गुणवत्ता जांच, डुप्लिकेट पहचान, और आवृत्ति विश्लेषण के लिए मानक पैटर्न है।

सिंटैक्स

SELECT column_name, COUNT(*) AS Frequency
FROM table_name
GROUP BY column_name
HAVING COUNT(*) >= 3;

व्यावहारिक उदाहरण

टेबल बनाएं:

mysql> CREATE TABLE DemoTable1351 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(40)
);

डेटा डालें (बहुत सारे डुप्लिकेट):

mysql> INSERT INTO DemoTable1351(StudentName) VALUES('Chris');
mysql> INSERT INTO DemoTable1351(StudentName) VALUES('Bob');
mysql> INSERT INTO DemoTable1351(StudentName) VALUES('Bob');
mysql> INSERT INTO DemoTable1351(StudentName) VALUES('David');
mysql> INSERT INTO DemoTable1351(StudentName) VALUES('Bob');
mysql> INSERT INTO DemoTable1351(StudentName) VALUES('David');
mysql> INSERT INTO DemoTable1351(StudentName) VALUES('Bob');
mysql> INSERT INTO DemoTable1351(StudentName) VALUES('Mike');
mysql> INSERT INTO DemoTable1351(StudentName) VALUES('David');

डेटा देखें:

mysql> SELECT * FROM DemoTable1351;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Chris       |
| 2         | Bob         |
| 3         | Bob         |
| 4         | David       |
| 5         | Bob         |
| 6         | David       |
| 7         | Bob         |
| 8         | Mike        |
| 9         | David       |
+-----------+------------+

कम से कम 3 बार आने वाले नाम खोजें

mysql> SELECT StudentName, COUNT(*) AS Frequency
    -> FROM DemoTable1351
    -> GROUP BY StudentName
    -> HAVING COUNT(*) >= 3;

परिणाम

+-------------+-----------+
| StudentName | Frequency |
+-------------+-----------+
| Bob         | 4         |
| David       | 3         |
+-------------+-----------+

व्याख्या

  1. GROUP BY StudentName - प्रत्येक अद्वितीय नाम के लिए एक समूह बनाता है
  2. COUNT(*) - प्रत्येक समूह में पंक्तियों की गिनती करता है
  3. HAVING COUNT(*) >= 3 - केवल 3+ गिनती वाले समूह रखता है

WHERE बनाम HAVING

क्लॉजचरणएग्रीगेट उपयोग
WHEREसमूहन से पहले (पंक्ति स्तर)नहीं
HAVINGसमूहन के बाद (समूह स्तर)हां

WHERE COUNT(*) >= 3 **काम नहीं करेगा** - एग्रीगेट फ़ंक्शन के लिए HAVING आवश्यक है।

अधिक विवरण के साथ

SELECT StudentName, COUNT(*) AS Frequency, MIN(StudentId) AS FirstId, MAX(StudentId) AS LastId
FROM DemoTable1351
GROUP BY StudentName
HAVING COUNT(*) >= 3
ORDER BY Frequency DESC;

सभी डुप्लिकेट (2+ बार) खोजें

SELECT StudentName, COUNT(*) 
FROM DemoTable1351 
GROUP BY StudentName 
HAVING COUNT(*) > 1;

डुप्लिकेट पंक्तियों की पूरी डिटेल देखें

SELECT d.* 
FROM DemoTable1351 d
JOIN (
    SELECT StudentName 
    FROM DemoTable1351 
    GROUP BY StudentName 
    HAVING COUNT(*) >= 3
) dup ON d.StudentName = dup.StudentName
ORDER BY d.StudentName, d.StudentId;

प्रदर्शन

  • StudentName पर इंडेक्स GROUP BY को तेज करता है
  • HAVING फिल्टर इंडेक्स के बाद लागू होता है
  • बड़े टेबल पर COUNT(*) महंगा हो सकता है - सैंपलिंग या अनुमानित गिनती पर विचार करें

उपयोग के मामले

  • डेटा गुणवत्ता: संदिग्ध डुप्लिकेट खाते/रिकॉर्ड खोजें
  • धोखाधड़ी पहचान: एक ही उपयोगकर्ता से बार-बार लेनदेन
  • इन्वेंटरी: बार-बार ऑर्डर किए गए SKU
  • लॉग विश्लेषण: बार-बार होने वाली त्रुटि संदेश

GROUP BY ... HAVING COUNT(*) >= N डुप्लिकेट/आवृत्ति विश्लेषण का मूलभूत SQL पैटर्न है।

  1. - MySQL में LIKE से विशिष्ट डुप्लिकेट रिकॉर्ड प्रदर्शित करें

    MySQL में LIKE ऑपरेटर का उपयोग करके किसी विशिष्ट मान के सभी डुप्लिकेट रिकॉर्ड चुन सकते हैं। सिंटैक्स SELECT * FROM टेबल_नाम WHERE कॉलम_नाम LIKE मान; उदाहरण: John के सभी रिकॉर्ड 1. टेबल बनाएं CREATE TABLE DemoTable (Name VARCHAR(20)); 2. डेटा डालें (डुप्लिकेट के साथ) INSERT INTO DemoTable VALUE

  1. - MySQL में LEFT() फंक्शन का उपयोग करके केवल 15 वर्ण कैसे प्राप्त करें?

    MySQL में LEFT() फ़ंक्शन का उपयोग करके स्ट्रिंग के बाएं से निर्दिष्ट संख्या में वर्ण प्राप्त किए जा सकते हैं। ध्यान दें: यह शब्द नहीं, वर्ण गिनता है। सिंटैक्स LEFT(string, length) उदाहरण तालिका बनाएं और डेटा डालें: mysql> CREATE TABLE DemoTable (Title TEXT); mysql> INSERT INTO DemoTable VALU

  1. - Java के साथ MySQL में वर्तमान तारीख में महीने जोड़ें

    सिंटैक्स String query = INSERT INTO yourTableName VALUES (CURDATE() + INTERVAL howManyMonths MONTH); उदाहरण वर्तमान तारीख: 2020-10-25 2 महीने जोड़ने के बाद: 2020-12-25 Java कोड 0) System.out.println(Record inserted successfully..Look into the database); else System.out.print