नाम के अनुसार ग्रुप करके कुल स्कोर जोड़ना और सॉर्ट करना
समान नाम वाले छात्रों के स्कोर का योग निकालने के लिए GROUP BY StudentName के साथ SUM(Score) उपयोग करें, फिर ORDER BY SUM(Score) से सॉर्ट करें।
टेबल और डेटा
CREATE TABLE countRowValueDemo (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(20),
StudentMathScore INT
);
INSERT INTO countRowValueDemo (StudentName, StudentMathScore) VALUES
('Larry', 45), ('Mike', 56), ('John', 60), ('David', 40),
('David', 70), ('John', 80), ('David', 88);
केस 1: अवरोही क्रम (उच्चतम कुल पहले)
SELECT StudentName, SUM(StudentMathScore) AS TOTAL_SCORE FROM countRowValueDemo GROUP BY StudentName ORDER BY SUM(StudentMathScore) DESC;
आउटपुट
+-------------+-------------+ | StudentName | TOTAL_SCORE | +-------------+-------------+ | David | 198 | | John | 140 | | Mike | 56 | | Larry | 45 | +-------------+-------------+
केस 2: आरोही क्रम (न्यूनतम कुल पहले)
SELECT StudentName, SUM(StudentMathScore) AS TOTAL_SCORE FROM countRowValueDemo GROUP BY StudentName ORDER BY SUM(StudentMathScore) ASC;
आउटपुट
+-------------+-------------+ | StudentName | TOTAL_SCORE | +-------------+-------------+ | Larry | 45 | | Mike | 56 | | John | 140 | | David | 198 | +-------------+-------------+
बेस्ट प्रैक्टिस
ORDER BYमें एग्रीगेट फंक्शन दोहराने के बजाय एलियास उपयोग करें:ORDER BY TOTAL_SCORE DESC(MySQL अनुमति देता है)।- नाम से ग्रुप करना तभी सही है जब नाम वास्तव में अद्वितीय पहचानकर्ता हो; वास्तविक ऐप में
StudentIdया अलगStudentटेबल से जॉइन करें। ONLY_FULL_GROUP_BYमोड (डिफ़ॉल्ट) मेंSELECTसूची में केवल ग्रुप-बाय कॉलम या एग्रीगेट होने चाहिए।