Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
MySQL + SQL · Lesson 64

SQL से Report Card Query

एक असली report card

Report card query एक classic school project है: marks की table से, हर student का total, percentage, grade और pass/fail निकालना। यह SUM, GROUP BY और CASE एक साथ लाता है — एक बढ़िया व्यावहारिक अभ्यास।

💡 प्रति student प्रति subject एक row → student से GROUP BY → total को SUM, grade को CASE।

Marks table

-- प्रति student प्रति subject एक row
+------------+---------+-------+
| student_id | subject | marks |
+------------+---------+-------+
|          1 | Math    |    88 |
|          1 | Science |    76 |
|          1 | English |    92 |
+------------+---------+-------+

यह normalized layout (प्रति subject एक row) totals और averages आसान बनाता है, और table बदले बिना subjects जोड़ने देता है।

Total और percentage

SELECT student_id,
    SUM(marks) AS total,
    ROUND(SUM(marks) / (COUNT(*) * 100) * 100, 2) AS percent
FROM marks
GROUP BY student_id;
+------------+-------+---------+ | student_id | total | percent | +------------+-------+---------+ | 1 | 256 | 85.33 | +------------+-------+---------+

Student से GROUP BY, total को marks SUM, और percentage को अधिकतम (subjects × 100) से भाग, दो जगह round।

CASE से grade

SELECT student_id,
    SUM(marks) AS total,
    CASE
        WHEN SUM(marks)/(COUNT(*)*100)*100 >= 90 THEN 'A'
        WHEN SUM(marks)/(COUNT(*)*100)*100 >= 75 THEN 'B'
        WHEN SUM(marks)/(COUNT(*)*100)*100 >= 33 THEN 'C'
        ELSE 'F'
    END AS grade
FROM marks
GROUP BY student_id;

Percentage पर CASE number को letter grade में बदलता है, query में ही।

Pass या fail

SELECT student_id,
    CASE WHEN MIN(marks) >= 33 THEN 'Pass' ELSE 'Fail' END AS result
FROM marks
GROUP BY student_id;

Student सिर्फ़ तब pass होता है जब हर subject कम-से-कम pass mark हो। MIN(marks) >= 33 जाँचना किसी भी एक subject में failure पकड़ता है।

Students rank करना

SELECT student_id, SUM(marks) AS total,
    RANK() OVER (ORDER BY SUM(marks) DESC) AS rank_no
FROM marks
GROUP BY student_id;

MySQL 8.0+ में, RANK() total marks से positions देता है, हर student को उनका class rank देकर। पुराने MySQL पर, बस ORDER BY total DESC।

आम गलतियाँ

  • सारे subjects एक row में store करना। आसान SUM/AVG को प्रति subject एक row इस्तेमाल कीजिए।
  • गलत percentage divisor। subjects × max marks से भाग कीजिए, fixed number नहीं।
  • Pass जाँच से पहले grading। कम subject ऊँचे average को fail कर सकता है।
  • GROUP BY भूलना। Aggregates को प्रति student काम करने को यह चाहिए।

सारांश

  • Marks प्रति student प्रति subject एक row store कीजिए।
  • Total = SUM(marks); percentage subjects × 100 से भाग।
  • Grade को percentage पर CASE से।
  • Pass/fail MIN(marks) को pass mark से इस्तेमाल करता है।
  • ORDER BY total या RANK() (MySQL 8.0+) से rank कीजिए।

आगे, grouping सीखिए GROUP BY और HAVING में, या पूरा marksheet database project बनाइए।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

MySQL report card में total और percentage कैसे निकालूँ?
प्रति student प्रति subject एक row store कीजिए, फिर total को student से grouped SUM(marks) इस्तेमाल कीजिए, और percentage को अधिकतम संभव से भाग: SUM(marks) AS total, SUM(marks)/(COUNT(*)*100)*100 AS percent। Student से GROUP BY कीजिए।
Report card query में grade कैसे assign करूँ?
Percentage पर CASE इस्तेमाल कीजिए: CASE WHEN percent >= 90 THEN 'A' WHEN percent >= 75 THEN 'B' ... ELSE 'F' END। यह numeric percentage को result में letter grade में बदलता है।
MySQL में pass या fail कैसे दिखाऊँ?
Pass mark से तुलना करता CASE, या न्यूनतम subject mark जाँचिए: CASE WHEN MIN(marks) >= 33 THEN 'Pass' ELSE 'Fail' END। Student fail होता है अगर कोई subject pass mark से नीचे हो।
Students को उनके total marks से कैसे rank करूँ?
Total descending से order कीजिए: ORDER BY total DESC। Numbered rank को, MySQL 8.0+ में RANK() OVER (ORDER BY total DESC) इस्तेमाल कीजिए, जो हर student को उनके total के आधार पर position देता है।
Report card को marks कैसे structure करूँ?
Marks को प्रति student प्रति subject एक row (student_id, subject, marks) store कीजिए। यह normalized layout आपको प्रति student आसानी से SUM, AVG और COUNT करने देता है, और table संरचना बदले बिना नए subjects जोड़ने देता है।
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicSQL से Fee Summary Query आपकी प्रगति: 64 / 151 (42%) · Lesson 65 / 151 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें