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

MySQL में row_number कैसे प्राप्त करें

कभी-कभी आपको रिपोर्टिंग और विश्लेषण के लिए MySQL में पंक्ति संख्या प्राप्त करने की आवश्यकता हो सकती है। आँकड़ों को क्रमित करने और छाँटने में पंक्ति संख्या बहुत उपयोगी होती है। यह पंक्ति संख्या मान के आधार पर डेटा को फ़िल्टर करने में भी सहायक है। इस लेख में, हम देखेंगे कि row_number . कैसे प्राप्त करें MySQL में।


MySQL में row_number कैसे प्राप्त करें

Row_number() फ़ंक्शन MySQL 8.0 के बाद से बॉक्स से बाहर उपलब्ध है।

यहां row_number() . का सिंटैक्स दिया गया है वाक्य - विन्यास। कृपया ध्यान दें, खंड द्वारा विभाजन वैकल्पिक है।

ROW_NUMBER() OVER (
     PARTITION BY <expression(s)> 
     ORDER BY <expression(s)> [ASC|DESC])

मान लें कि आपके पास निम्न बिक्री है टेबल।

 +------+------------+--------+
 | id   | order_date | amount |
 +------+------------+--------+
 |    1 | 2021-01-01 |    200 |
 |    2 | 2021-01-02 |    250 |
 |    3 | 2021-01-03 |    220 |
 |    4 | 2021-01-04 |    230 |
 |    5 | 2021-01-05 |    210 |
 |    6 | 2021-01-06 |    100 |
 |    7 | 2021-01-07 |    120 |
 |    8 | 2021-01-08 |    150 |
 |    9 | 2021-01-09 |    180 |
 |   10 | 2021-01-10 |    200 |
 +------+------------+--------+

यहां row_number . का उपयोग करने का एक उदाहरण दिया गया है राशि . के अवरोही क्रम में पंक्तियों को रैंक करने के लिए कार्य करता है कॉलम।

mysql> select row_number() over (
       order by amount desc) row_num,
       amount
       from sales
       order by amount desc;
 +---------+--------+
 | row_num | amount |
 +---------+--------+
 |       1 |    250 |
 |       2 |    230 |
 |       3 |    220 |
 |       4 |    210 |
 |       5 |    200 |
 |       6 |    200 |
 |       7 |    180 |
 |       8 |    150 |
 |       9 |    120 |
 |      10 |    100 |
 +---------+--------+

उपरोक्त प्रश्न में, हम संपूर्ण तालिका को एक ही विभाजन के रूप में मानते हैं और खंड द्वारा विभाजन प्रदान नहीं करते हैं। हम इन पंक्तियों को राशि कॉलम द्वारा अवरोही क्रम में भी क्रमबद्ध करते हैं और row_number() . का उपयोग करते हैं इन पंक्तियों को रैंक करने के लिए कार्य करें।

हालांकि, यदि आप MySQL <8.0 का उपयोग कर रहे हैं तो row_number . प्राप्त करने के चरण यहां दिए गए हैं MySQL में।

mysql> SELECT t.*, @rownum := @rownum + 1 AS rank 
          FROM sales t, (SELECT @rownum := 0) r  
          order by amount desc;
 +------+---------------------+--------+------+
 | id   | order_date          | amount | rank |
 +------+---------------------+--------+------+
 |    1 | 2021-02-02 08:15:00 |    250 |    1 |
 |   10 | 2021-02-02 11:15:00 |    250 |    2 |
 |    5 | 2021-02-02 09:30:00 |    250 |    3 |
 |    9 | 2021-02-02 10:45:00 |    200 |    4 |
 |   12 | 2021-02-02 11:45:00 |    200 |    5 |
 |    6 | 2021-02-02 09:45:00 |    200 |    6 |
 |    2 | 2021-02-02 08:30:00 |    200 |    7 |
 |    7 | 2021-02-02 10:15:00 |    180 |    8 |
 |    3 | 2021-02-02 08:55:00 |    150 |    9 |
 |   11 | 2021-02-02 11:30:00 |    150 |   10 |
 |    4 | 2021-02-02 09:15:00 |    125 |   11 |
 |    8 | 2021-02-02 10:30:00 |    125 |   12 |
 +------+---------------------+--------+------+

उपरोक्त SQL क्वेरी में, हम एक अस्थायी चर rownum . का उपयोग करते हैं पंक्ति संख्या स्टोर करने के लिए। जब MySQL क्रमिक रूप से पंक्तियों को पार करता है, तो यह rownum . असाइन करता है प्रत्येक पंक्ति में वृद्धिशील तरीके से।

MySQL के लिए एक रिपोर्टिंग टूल की आवश्यकता है? Ubiq मिनटों में डेटा की कल्पना करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:पंक्तियों की प्रतिलिपि कैसे करें, लेकिन कुछ फ़ील्ड बदलें?

  2. उबंटू में MySQL के लिए एसएसएल/टीएलएस कैसे सक्षम करें

  3. एक अतिरिक्त क्षेत्र के साथ सिद्धांत 2 और कई-से-अनेक लिंक तालिका

  4. MySQL:रैंडम एंट्री का चयन करें, लेकिन कुछ प्रविष्टियों की ओर वजन

  5. MySQL ट्रिगर अपडेट के बाद ही अगर पंक्ति बदल गई है