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

MySQL में प्रत्येक श्रेणी के लिए शीर्ष 10 रिकॉर्ड का चयन करें

जब आप कोई ईकॉमर्स व्यवसाय या ऑनलाइन स्टोर चलाते हैं, तो आपको रिपोर्टिंग और विश्लेषण के लिए प्रत्येक श्रेणी के उत्पाद, ब्रांड आदि के लिए शीर्ष 10 रिकॉर्ड चुनने की आवश्यकता हो सकती है। इस लेख में, हम देखेंगे कि MySQL में प्रत्येक श्रेणी के लिए शीर्ष 10 रिकॉर्ड कैसे चुनें।


प्रत्येक श्रेणी के लिए शीर्ष 10 रिकॉर्ड चुनें

यहां प्रत्येक श्रेणी के लिए शीर्ष 10 रिकॉर्ड चुनने के चरण दिए गए हैं। मान लें कि आपके पास निम्न तालिका है बिक्री (आईडी, उत्पाद, ऑर्डर_डेट, राशि) .

mysql> create table sales(id int, 
        product  varchar(255), 
        order_date date, 
        amount int);

mysql> insert into sales(id, product, order_date, amount)
      values(1,'A','2021-01-01',125),
      (2,'A','2021-01-02',225),
      (3,'A','2021-01-03',325),
      (4,'A','2021-01-04',105),
      (5,'A','2021-01-05',150),
      (6,'A','2021-01-06',215),
      (7,'A','2021-01-07',205),
      (8,'A','2021-01-08',125),
      (9,'A','2021-01-09',350),
      (10,'A','2021-01-10',235),
      (11,'A','2021-01-11',325),
      (12,'B','2021-01-01',150),
      (13,'B','2021-01-02',165),
      (14,'B','2021-01-03',145),
      (15,'B','2021-01-04',115),
      (16,'B','2021-01-05',105),
      (17,'B','2021-01-06',195),
      (18,'B','2021-01-07',185),
      (19,'B','2021-01-08',175),
      (20,'B','2021-01-09',165),
      (21,'B','2021-01-10',115),
      (22,'B','2021-01-11',125);


 mysql> select * from sales;
 +------+---------+------------+--------+
 | id   | product | order_date | amount |
 +------+---------+------------+--------+
 |    1 | A       | 2021-01-01 |    125 |
 |    2 | A       | 2021-01-02 |    225 |
 |    3 | A       | 2021-01-03 |    325 |
 |    4 | A       | 2021-01-04 |    105 |
 |    5 | A       | 2021-01-05 |    150 |
 |    6 | A       | 2021-01-06 |    215 |
 |    7 | A       | 2021-01-07 |    205 |
 |    8 | A       | 2021-01-08 |    125 |
 |    9 | A       | 2021-01-09 |    350 |
 |   10 | A       | 2021-01-10 |    235 |
 |   11 | A       | 2021-01-11 |    325 |
 |   12 | B       | 2021-01-01 |    150 |
 |   13 | B       | 2021-01-02 |    165 |
 |   14 | B       | 2021-01-03 |    145 |
 |   15 | B       | 2021-01-04 |    115 |
 |   16 | B       | 2021-01-05 |    105 |
 |   17 | B       | 2021-01-06 |    195 |
 |   18 | B       | 2021-01-07 |    185 |
 |   19 | B       | 2021-01-08 |    175 |
 |   20 | B       | 2021-01-09 |    165 |
 |   21 | B       | 2021-01-10 |    115 |
 |   22 | B       | 2021-01-11 |    125 |
 +------+---------+------------+--------+

बोनस पढ़ें :MySQL में कॉमन टेबल एक्सप्रेशन

हम राशि . द्वारा शीर्ष 10 रिकॉर्ड का चयन करेंगे प्रत्येक श्रेणी (उत्पाद) के लिए कॉलम। सबसे पहले, हम प्रत्येक पंक्ति को उसके समूह (उत्पाद) में रैंक करेंगे।

mysql> SELECT id, product, amount, 
@product_rank := IF(@current_product = product, @product_rank + 1, 1) AS product_rank, 
@current_product := product as current_product 
      FROM product_orders 
      ORDER BY product, amount desc;

+------+---------+--------+--------------+-----------------+
 | id   | product | amount | product_rank | current_product |
 +------+---------+--------+--------------+-----------------+
 |    9 | A       |    350 |            1 | A               |
 |    3 | A       |    325 |            2 | A               |
 |   11 | A       |    325 |            3 | A               |
 |   10 | A       |    235 |            4 | A               |
 |    2 | A       |    225 |            5 | A               |
 |    6 | A       |    215 |            6 | A               |
 |    7 | A       |    205 |            7 | A               |
 |    5 | A       |    150 |            8 | A               |
 |    1 | A       |    125 |            9 | A               |
 |    8 | A       |    125 |           10 | A               |
 |    4 | A       |    105 |           11 | A               |
 |   17 | B       |    195 |            1 | B               |
 |   18 | B       |    185 |            2 | B               |
 |   19 | B       |    175 |            3 | B               |
 |   20 | B       |    165 |            4 | B               |
 |   13 | B       |    165 |            5 | B               |
 |   12 | B       |    150 |            6 | B               |
 |   14 | B       |    145 |            7 | B               |
 |   22 | B       |    125 |            8 | B               |
 |   15 | B       |    115 |            9 | B               |
 |   21 | B       |    115 |           10 | B               |
 |   16 | B       |    105 |           11 | B               |
 +------+---------+--------+--------------+-----------------+

उपरोक्त क्वेरी में, हम अस्थायी चर product_rank . का उपयोग करते हैं और current_product नवीनतम रैंक मूल्य और उत्पाद मूल्य का ट्रैक रखने के लिए।

बोनस पढ़ें :MySQL में मार्जिन की गणना कैसे करें

इसके बाद, हम प्रत्येक उत्पाद के लिए शीर्ष 10 रिकॉर्ड का चयन करने के लिए उपरोक्त क्वेरी को एक सबक्वेरी के रूप में उपयोग करेंगे।

mysql> select id, product, amount 
       from ( SELECT id, product, amount, 
@product_rank := IF(@current_product = product, @product_rank + 1, 1) AS product_rank, 
@current_product := product FROM sales ORDER BY product, amount desc ) 
ranked_rows 
where product_rank<=10;
 +------+---------+--------+
 | id   | product | amount |
 +------+---------+--------+
 |    9 | A       |    350 |
 |    3 | A       |    325 |
 |   11 | A       |    325 |
 |   10 | A       |    235 |
 |    2 | A       |    225 |
 |    6 | A       |    215 |
 |    7 | A       |    205 |
 |    5 | A       |    150 |
 |    1 | A       |    125 |
 |    8 | A       |    125 |
 |   17 | B       |    195 |
 |   18 | B       |    185 |
 |   19 | B       |    175 |
 |   20 | B       |    165 |
 |   13 | B       |    165 |
 |   12 | B       |    150 |
 |   14 | B       |    145 |
 |   22 | B       |    125 |
 |   15 | B       |    115 |
 |   21 | B       |    115 |
 +------+---------+--------+

बोनस पढ़ें :SQL का उपयोग करके सर्वाधिक बिकने वाले उत्पादों का चयन कैसे करें

हमने जहाँ product_rank<=10 . शर्त का उपयोग किया है केवल शीर्ष 10 रिकॉर्ड का चयन करने के लिए। आप जितनी चाहें उतनी पंक्तियों का चयन करने के लिए इसे संशोधित कर सकते हैं।

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. LOAD DATA INFILE का उपयोग करके MySQL तालिका में आयात करते समय CSV फ़ाइल में कॉलम कैसे छोड़ें?

  2. mySQL और postgreSQL में क्लॉज द्वारा समूह, postgreSQL में त्रुटि क्यों?

  3. MySQL - मौजूदा फ़ील्ड को विशिष्ट बनाएं

  4. MySQL में BIT और TINYINT में क्या अंतर है?

  5. MySQL में सोशल नेटवर्क सिस्टम के लिए डेटाबेस डिजाइन करने के लिए गाइड