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

MySQL में डुप्लिकेट मान वाली टेबल से शीर्ष घटित होने वाली प्रविष्टियाँ कैसे चुनें?

MySQL में GROUP BY, COUNT और LIMIT का उपयोग करके शीर्ष आवृत्ति वाली प्रविष्टियाँ खोजना

डुप्लिकेट मान वाली टेबल से सबसे अधिक बार आने वाली प्रविष्टियाँ खोजने के लिए GROUP BY, COUNT(), ORDER BY और LIMIT का संयोजन उपयोग करें।

उदाहरण के साथ पूर्ण कार्यान्वयन

टेबल बनाना

mysql> CREATE TABLE DemoTable610 (SubjectName VARCHAR(100));

रिकॉर्ड डालना (डुप्लिकेट के साथ)

mysql> INSERT INTO DemoTable610 VALUES
('MySQL'), ('Java'), ('MySQL'), ('MongoDB'), ('MySQL'), ('MySQL'),
('Java'), ('MongoDB'), ('C'), ('C++'), ('MongoDB'), ('MySQL'),
('Java'), ('Python'), ('MySQL');

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable610;

आउटपुट: 15 पंक्तियाँ (MySQL: 6, Java: 3, MongoDB: 3, C: 1, C++: 1, Python: 1)

शीर्ष 2 सबसे अधिक घटित होने वाली प्रविष्टियाँ

mysql> SELECT SubjectName FROM (
    SELECT SubjectName 
    FROM DemoTable610 
    GROUP BY SubjectName 
    ORDER BY COUNT(SubjectName) DESC 
    LIMIT 2
) AS tbl ORDER BY SubjectName;

आउटपुट:

+-------------+
| SubjectName |
+-------------+
| Java        |
| MySQL       |
+-------------+
2 rows in set (0.04 sec)

चरण-दर-चरण व्याख्या:

  1. GROUP BY SubjectName - प्रत्येक विषय के लिए समूह बनाता है
  2. COUNT(SubjectName) - प्रत्येक समूह की घटनाएँ गिनता है
  3. ORDER BY COUNT(...) DESC - घटती क्रम में क्रमबद्ध करता है
  4. LIMIT 2 - शीर्ष 2 लेता है
  5. बाहरी क्वेरी: ORDER BY SubjectName - वर्णानुक्रम में क्रमबद्ध करता है

गिनती के साथ परिणाम देखने के लिए

SELECT SubjectName, COUNT(*) AS frequency
FROM DemoTable610
GROUP BY SubjectName
ORDER BY frequency DESC, SubjectName
LIMIT 2;

आउटपुट:

+-------------+-----------+
| SubjectName | frequency |
+-------------+-----------+
| MySQL       | 6         |
| Java        | 3         |
+-------------+-----------+

टाई (बराबरी) होने पर

यदि तीसरे स्थान पर भी समान गिनती हो, तो LIMIT 2 मनमाने ढंग से 2 चुनेगा। सभी टाई शामिल करने के लिए:

SELECT SubjectName, COUNT(*) AS freq
FROM DemoTable610
GROUP BY SubjectName
HAVING freq >= (
    SELECT COUNT(*) AS freq2
    FROM DemoTable610
    GROUP BY SubjectName
    ORDER BY freq2 DESC
    LIMIT 1 OFFSET 1
);

विंडो फ़ंक्शन (MySQL 8.0+)

SELECT SubjectName, freq
FROM (
    SELECT SubjectName, COUNT(*) AS freq,
           RANK() OVER (ORDER BY COUNT(*) DESC) AS rnk
    FROM DemoTable610
    GROUP BY SubjectName
) t
WHERE rnk <= 2;
  1. - MySQL में दूसरी टेबल के मानों से टेबल कैसे अपडेट करें?

    हम INNER JOIN की मदद से दूसरी टेबल को अपडेट कर सकते हैं। आइए दो टेबल बनाकर समझते हैं। पहली टेबल बनाना (tblFirst) ); Query OK, 0 rows affected (0.48 sec) रिकॉर्ड डालना INSERT INTO tblFirst VALUES (3, David); सभी रिकॉर्ड देखना SELECT * FROM tblFirst; आउटपुट: +------+-------+ | id | name | +--

  1. - MySQL में कुछ मानों को टॉप पर कैसे सॉर्ट करें?

    बूलियन ORDER BY के साथ प्राथमिकता सॉर्टिंग विशिष्ट मानों को परिणामों में सबसे ऊपर लाने के लिए: SELECT * FROM yourTableName ORDER BY yourColumnName = priorityValue DESC, yourIdColumnName; column = value बूलियन एक्सप्रेशन है (TRUE=1, FALSE=0)। DESC से TRUE (1) पहले आता है। उदाहरण: टेबल बनाना और डेट

  1. Java के साथ MySQL डेटाबेस में टेबल से अंतिम रिकॉर्ड कैसे प्राप्त करें? Java के साथ MySQL डेटाबेस में टेबल से अंतिम रिकॉर्ड कैसे प्राप्त करें?

    MySQL डेटाबेस से डेटा प्राप्त करने के लिए, आपको Java से executeQuery() मेथड का उपयोग करना होगा। पहले MySQL डेटाबेस में एक टेबल बनाएं। यहां हम sample डेटाबेस में निम्नलिखित टेबल बनाएंगे: ); Query OK, 0 rows affected (0.80 sec) अब INSERT कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डाल सकते हैं। क्वेरी