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

MySQL में छात्र के अंकों को ग्रुप करके कुल अंक कैसे प्रदर्शित करें?

MySQL में किसी कॉलम के मानों को ग्रुप करके एग्रीगेट फंक्शन (जैसे SUM()) लागू करने के लिए GROUP BY क्लॉज़ का उपयोग करें। यह प्रति छात्र कुल अंक, औसत, गिनती आदि निकालने का मानक तरीका है।

उदाहरण: प्रति छात्र कुल अंक

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1920 (
    StudentName VARCHAR(20),
    StudentMarks INT
);

डेटा इन्सर्ट करें (Chris के 3, David के 2 रिकॉर्ड):

mysql> INSERT INTO DemoTable1920 VALUES
('Chris', 67), ('David', 97), ('Chris', 57), ('David', 45), ('Chris', 89);

डेटा:

+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| Chris       | 67           |
| David       | 97           |
| Chris       | 57           |
| David       | 45           |
| Chris       | 89           |
+-------------+--------------+

GROUP BY और SUM() के साथ क्वेरी:

mysql> SELECT StudentName, SUM(StudentMarks) AS TotalMarks
FROM DemoTable1920
GROUP BY StudentName;

आउटपुट:

+-------------+------------+
| StudentName | TotalMarks |
+-------------+------------+
| Chris       | 213        |
| David       | 142        |
+-------------+------------+

GROUP BY कैसे काम करता है

  1. ग्रुप बनाता है: समान StudentName वाली पंक्तियों को एक ग्रुप में रखता है
  2. एग्रीगेट लागू: प्रत्येक ग्रुप पर SUM(StudentMarks) लागू करता है
  3. एक पंक्ति प्रति ग्रुप: परिणाम में प्रत्येक अद्वितीय नाम के लिए एक पंक्ति

अन्य उपयोगी एग्रीगेट फंक्शन

SELECT StudentName,
       COUNT(*) AS exam_count,
       SUM(StudentMarks) AS total_marks,
       AVG(StudentMarks) AS avg_marks,
       MIN(StudentMarks) AS min_marks,
       MAX(StudentMarks) AS max_marks,
       STDDEV(StudentMarks) AS stddev_marks
FROM DemoTable1920
GROUP BY StudentName;

HAVING के साथ फ़िल्टरिंग

ग्रुप बनने के बाद फ़िल्टर करने के लिए HAVING उपयोग करें:

-- केवल 200+ कुल अंक वाले छात्र
SELECT StudentName, SUM(StudentMarks) AS TotalMarks
FROM DemoTable1920
GROUP BY StudentName
HAVING SUM(StudentMarks) > 200;

WHERE vs HAVING

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

बेस्ट प्रैक्टिस

  • SELECT में केवल ग्रुपिंग कॉलम या एग्रीगेट फंक्शन शामिल करें
  • MySQL 5.7+ में ONLY_FULL_GROUP_BY मोड डिफ़ॉल्ट ऑन है (सख्त SQL मोड)
  • ग्रुपिंग कॉलम पर इंडेक्स प्रदर्शन सुधारता है

GROUP BY डेटा विश्लेषण, रिपोर्टिंग, और सारांश उत्पन्न करने का मूलभूत टूल है।

  1. - MySQL में छात्र के अंकों को ग्रुप करके कुल अंक कैसे प्रदर्शित करें?

    MySQL में किसी कॉलम के मानों को ग्रुप करके एग्रीगेट फंक्शन (जैसे SUM()) लागू करने के लिए GROUP BY क्लॉज़ का उपयोग करें। यह प्रति छात्र कुल अंक, औसत, गिनती आदि निकालने का मानक तरीका है। उदाहरण: प्रति छात्र कुल अंक डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1920 ( StudentName VARCHAR(20),

  1. - MySQL में रिकॉर्ड घटनाओं की गिनती करके नए कॉलम में कैसे प्रदर्शित करें?

    MySQL में किसी कॉलम के मान की घटनाओं (occurrences) को गिनकर नए कॉलम के रूप में प्रदर्शित करने के लिए, COUNT(*) के साथ GROUP BY का उपयोग करें। यह डेटा वितरण विश्लेषण, डुप्लिकेट पहचान, और आवृत्ति रिपोर्टिंग के लिए मानक तरीका है। उदाहरण: Value कॉलम की घटनाएं गिनना डेमो टेबल बनाएं: mysql> CREATE T

  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