MySQL में किसी कॉलम के मान की घटनाओं (occurrences) को गिनकर नए कॉलम के रूप में प्रदर्शित करने के लिए, COUNT(*) के साथ GROUP BY का उपयोग करें। यह डेटा वितरण विश्लेषण, डुप्लिकेट पहचान, और आवृत्ति रिपोर्टिंग के लिए मानक तरीका है।
उदाहरण: Value कॉलम की घटनाएं गिनना
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1942 (Value INT);
डेटा इन्सर्ट करें (डुप्लिकेट के साथ):
mysql> INSERT INTO DemoTable1942 VALUES (1), (2), (3), (2), (3), (3), (1);
डेटा:
+-------+ | Value | +-------+ | 1 | | 2 | | 3 | | 2 | | 3 | | 3 | | 1 | +-------+
GROUP BY के साथ गिनती:
mysql> SELECT Value, COUNT(*) AS occurrences FROM DemoTable1942 GROUP BY Value;
आउटपुट:
+-------+-------------+ | Value | occurrences | +-------+-------------+ | 1 | 2 | | 2 | 2 | | 3 | 3 | +-------+-------------+
व्याख्या
GROUP BY Value: समान Value वाली पंक्तियों को ग्रुप करता हैCOUNT(*): प्रत्येक ग्रुप में पंक्तियों की गिनती करता हैAS occurrences: परिणाम कॉलम को नाम देता है
उन्नत विविधताएं
प्रतिशत के साथ
SELECT Value,
COUNT(*) AS cnt,
ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (), 2) AS pct
FROM DemoTable1942
GROUP BY Value;
क्रमबद्ध परिणाम (सबसे अधिक बार पहले)
SELECT Value, COUNT(*) AS occurrences FROM DemoTable1942 GROUP BY Value ORDER BY occurrences DESC;
HAVING के साथ फ़िल्टर (केवल डुप्लिकेट)
SELECT Value, COUNT(*) AS occurrences FROM DemoTable1942 GROUP BY Value HAVING COUNT(*) > 1;
एकाधिक कॉलम द्वारा ग्रुप
SELECT category, status, COUNT(*) FROM orders GROUP BY category, status;
विंडो फंक्शन (MySQL 8.0+) - प्रत्येक पंक्ति पर गिनती दिखाएं
SELECT Value,
COUNT(*) OVER (PARTITION BY Value) AS occurrences
FROM DemoTable1942;
यह प्रत्येक पंक्ति को मूल क्रम में रखते हुए उसकी ग्रुप गिनती दिखाता है।
प्रदर्शन टिप्स
- ग्रुपिंग कॉलम (
Value) पर इंडेक्स बनाएं - बड़े टेबल्स के लिए, अनुमानित गिनती या सैंपलिंग पर विचार करें
COUNT(*)COUNT(column)से तेज़ है (NULL चेक नहीं करता)
GROUP BY + COUNT() डेटा प्रोफाइलिंग, डुप्लिकेट डिटेक्शन, और फ्रीक्वेंसी विश्लेषण का मूलभूत पैटर्न है।