Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में समूहीकृत रैंकिंग कैसे करें

SELECT id_student, id_class, grade,
   @student:=CASE WHEN @class <> id_class THEN 0 ELSE @student+1 END AS rn,
   @class:=id_class AS clset
FROM
  (SELECT @student:= -1) s,
  (SELECT @class:= -1) c,
  (SELECT *
   FROM mytable
   ORDER BY id_class, id_student
  ) t

यह बहुत ही सरल तरीके से काम करता है:

  1. प्रारंभिक क्वेरी id_class द्वारा आदेशित की जाती है सबसे पहले, id_student दूसरा।
  2. @student और @class -1 . में इनिशियलाइज़ किया गया है
  3. @class यह जांचने के लिए प्रयोग किया जाता है कि अगला सेट दर्ज किया गया है या नहीं। अगर id_class . का पिछला मान (जो @class . में स्टोर होता है ) वर्तमान मान के बराबर नहीं है (जो id_class . में संग्रहीत है ), @student शून्य है। अन्यथा वृद्धि हुई है।
  4. @class id_class . के नए मान के साथ असाइन किया गया है , और इसका उपयोग अगली पंक्ति में चरण 3 पर परीक्षण में किया जाएगा।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पहले विशिष्ट फ़ील्ड मान द्वारा आदेश देना

  2. MySQL में वेरिएबल कैसे घोषित करें?

  3. MySQL SIN () फ़ंक्शन - MySQL में किसी संख्या की साइन लौटाएं

  4. विस्फोट के बराबर () MySQL में तार के साथ काम करने के लिए

  5. SQL सर्वर संख्यात्मक कार्यों पर एक त्वरित नज़र