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

MySQL में GROUP BY का उपयोग करके अद्वितीय मान प्राप्त करना और उनकी गणना करना

समाधान: GROUP BY के साथ COUNT(*)

किसी कॉलम के अद्वितीय मान प्राप्त करने और प्रत्येक की घटनाओं की गणना करने के लिए GROUP BY क्लॉज का उपयोग करें।

सिंटैक्स

SELECT yourColumnName, COUNT(*) AS anyAliasName
FROM yourTableName
GROUP BY yourColumnName;

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

टेबल बनाना और डेटा डालना

mysql> CREATE TABLE GroupByAndCountDemo (
    -> ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientName VARCHAR(100)
    -> );

mysql> INSERT INTO GroupByAndCountDemo(ClientName) VALUES
    -> ('John'), ('Carol'), ('Sam'), ('Sam'), ('John'), ('John'), ('John'),
    -> ('Sam'), ('Sam'), ('Sam'), ('John'), ('John'), ('John'), ('David'), ('Maxwell'), ('Maxwell');

मूल डेटा (16 पंक्तियाँ)

John: 7, Carol: 1, Sam: 5, David: 1, Maxwell: 2

GROUP BY क्वेरी

mysql> SELECT ClientName, COUNT(*) AS TotalCount
    -> FROM GroupByAndCountDemo
    -> GROUP BY ClientName;

परिणाम

ClientNameTotalCount
John7
Carol1
Sam5
David1
Maxwell2

उन्नत विविधताएं

गणना द्वारा क्रमबद्ध

SELECT ClientName, COUNT(*) AS TotalCount
FROM GroupByAndCountDemo
GROUP BY ClientName
ORDER BY TotalCount DESC;

HAVING के साथ फ़िल्टर (केवल 2 से अधिक वाले)

SELECT ClientName, COUNT(*) AS TotalCount
FROM GroupByAndCountDemo
GROUP BY ClientName
HAVING COUNT(*) > 2;

एकाधिक कॉलम द्वारा समूह

SELECT Department, Status, COUNT(*)
FROM Employees
GROUP BY Department, Status;

DISTINCT vs GROUP BY

विशेषताDISTINCTGROUP BY
उद्देश्यअद्वितीय मानसमूह + एग्रीगेशन
गिनतीनहीं (अलग क्वेरी)हाँ (COUNT(*))
क्रमबद्धअंतर्निहित नहींORDER BY के साथ
फ़िल्टर समूहनहींHAVING के साथ

प्रदर्शन टिप

GROUP BY कॉलम पर इंडेक्स बनाने से प्रदर्शन में काफी सुधार होता है।

  1. - MySQL में Id और FileID कॉलम वाली टेबल में प्रत्येक FileID की प्रविष्टि गिनें

    MySQL COUNT() और GROUP BY: प्रत्येक FileID की घटनाओं की गिनती किसी कॉलम (जैसे FileID) के प्रत्येक विशिष्ट मान की घटनाओं की गिनती करने के लिए COUNT() के साथ GROUP BY का उपयोग करें। उदाहरण: FileID वार गिनती टेबल बनाएं (AUTO_INCREMENT 100 से): CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMEN

  1. - MySQL में विशिष्ट मानों की घटनाओं को गिनें और नए कॉलम में परिणाम प्रदर्शित करें

    COUNT(*) के साथ GROUP BY का उपयोग करके प्रत्येक विशिष्ट मान की घटनाओं को गिनें। टेबल बनाना और डेटा डालना CREATE TABLE DemoTable (Value INT); Query OK, 0 rows affected (0.57 sec) INSERT INTO DemoTable VALUES(80),(90),(90),(80),(100),(90); सभी रिकॉर्ड देखना SELECT * FROM DemoTable; आउटपुट: +----

  1. - विशिष्ट कॉलम मानों के लिए एकल MySQL क्वेरी में एकाधिक काउंट प्राप्त करें

    इसके लिए, आप विशिष्ट कॉलम के लिए पैरामीटर मान के साथ एग्रीगेट फंक्शन SUM() का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1790 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Score int ); Query OK, 0 rows affected (0.94 sec) इन्सर्ट कमा