जब आप कोई ईकॉमर्स व्यवसाय या ऑनलाइन स्टोर चलाते हैं, तो आपको रिपोर्टिंग और विश्लेषण के लिए प्रत्येक श्रेणी के उत्पाद, ब्रांड आदि के लिए शीर्ष 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 मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!