GROUP BY और COUNT(DISTINCT) के साथ प्रति उपयोगकर्ता अद्वितीय संदेश गिनना
जब आपको प्रत्येक समूह के लिए एक कॉलम में अद्वितीय मान गिनने हों, तो GROUP BY के साथ COUNT(DISTINCT column) का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable (
UserName VARCHAR(100),
UserPostMessage TEXT
);
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO DemoTable VALUES('Chris','Hi');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable VALUES('David','Hello');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable VALUES('Chris','Awesome');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('Chris','Amazing');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('David','Nice Place');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable VALUES('Chris','Amazing');
Query OK, 1 row affected (0.12 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+----------+-----------------+ | UserName | UserPostMessage | +----------+-----------------+ | Chris | Hi | | David | Hello | | Chris | Awesome | | Chris | Amazing | | David | Nice Place | | Chris | Amazing | +----------+-----------------+ 6 rows in set (0.00 sec)
प्रति उपयोगकर्ता अद्वितीय संदेश गिनने की क्वेरी
mysql> SELECT UserName, COUNT(DISTINCT UserPostMessage) AS NumberOfMessagesPostByUser
FROM DemoTable GROUP BY UserName;
परिणाम:
+----------+----------------------------+ | UserName | NumberOfMessagesPostByUser | +----------+----------------------------+ | Chris | 3 | | David | 2 | +----------+----------------------------+ 2 rows in set (0.00 sec)
विश्लेषण: Chris के 4 संदेश हैं लेकिन 'Amazing' दोहराया गया है, इसलिए 3 अद्वितीय। David के 2 अद्वितीय संदेश हैं। GROUP BY UserName प्रत्येक उपयोगकर्ता के लिए अलग गणना करता है।