कभी-कभी आपको प्रत्येक समूह में पहली पंक्ति या प्रति समूह न्यूनतम पंक्ति प्राप्त करने की आवश्यकता हो सकती है। यहां बताया गया है कि MySQL में प्रत्येक समूह में पहला रिकॉर्ड कैसे प्राप्त करें। आप MySQL, PostgreSQL, SQL Server और Oracle में प्रत्येक समूह में शीर्ष 1 पंक्ति प्राप्त करने के लिए इस SQL क्वेरी का उपयोग कर सकते हैं। आप इसका उपयोग प्रत्येक समूह के लिए शीर्ष 1 पंक्ति का चयन करने के लिए कर सकते हैं।
MySQL में प्रत्येक समूह में पहला रिकॉर्ड कैसे प्राप्त करें
यहाँ MySQL में प्रत्येक समूह में पहला रिकॉर्ड प्राप्त करने के चरण दिए गए हैं।
मान लें कि आपके पास एक टेबल है product_sales(product, order_date,sale) जिसमें कई उत्पादों का बिक्री डेटा शामिल है।
mysql> create table product_sales(product varchar(255),order_date date, sale int);
mysql> insert into product_sales(product,order_date, sale)
values('A','2020-05-01',250),
('B','2020-05-01',350),
('C','2020-05-01',1250),
('A','2020-05-02',450),
('B','2020-05-02',650),
('C','2020-05-02',1050),
('A','2020-05-03',150),
('B','2020-05-03',250),
('C','2020-05-03',1850);
mysql> select * from product_sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A | 2020-05-01 | 250 |
| B | 2020-05-01 | 350 |
| C | 2020-05-01 | 1250 |
| A | 2020-05-02 | 450 |
| B | 2020-05-02 | 650 |
| C | 2020-05-02 | 1050 |
| A | 2020-05-03 | 150 |
| B | 2020-05-03 | 250 |
| C | 2020-05-03 | 1850 |
+---------+------------+------+
बोनस पढ़ें :MySQL में अधिकतम मूल्य के साथ रिकॉर्ड कैसे प्राप्त करें
मान लीजिए कि आप प्रत्येक समूह में, यानी प्रत्येक उत्पाद के लिए पहला रिकॉर्ड प्राप्त करना चाहते हैं। प्रत्येक समूह के लिए प्रथम तिथि प्राप्त करने के लिए पहले हम GROUP BY का उपयोग करते हैं।
mysql> select product,min(order_date) from product_sales group by product; +---------+-----------------+ | product | max(order_date) | +---------+-----------------+ | A | 2020-05-01 | | B | 2020-05-01 | | C | 2020-05-01 | +---------+-----------------+
अब जब हम प्रत्येक समूह के लिए पहली तारीख जानते हैं, तो हम इस परिणाम को अपनी मूल तालिका के साथ जोड़ते हैं ताकि तिथि समूह द्वारा पहला रिकॉर्ड प्राप्त किया जा सके।
mysql> select product_sales.* from product_sales,
(select product,min(order_date) as order_date
from product_sales
group by product) max_sales
where product_sales.product=max_sales.product
and product_sales.order_date=max_sales.order_date;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A | 2020-05-03 | 250 |
| B | 2020-05-03 | 350 |
| C | 2020-05-03 | 1250 |
+---------+------------+------+
यदि आप प्रत्येक समूह के लिए अंतिम या नवीनतम रिकॉर्ड प्राप्त करना चाहते हैं, तो ऊपर MIN फ़ंक्शन के बजाय MAX का उपयोग करें।
बोनस पढ़ें :प्रत्येक समूह में अंतिम रिकॉर्ड कैसे प्राप्त करें
हर उपयोगकर्ता के लिए नवीनतम रिकॉर्ड का चयन कैसे करें
इसी तरह, आप प्रत्येक उपयोगकर्ता के लिए पहले रिकॉर्ड का चयन कर सकते हैं या प्रत्येक आईडी के लिए सबसे पुराना रिकॉर्ड प्राप्त कर सकते हैं। मान लें कि आपके पास निम्न तालिका है user_data(user_id,transaction_date,sale) उपयोगकर्ता लेन-देन डेटा के साथ
mysql> create table user_data(user_id int, transaction_date date, sale int);
mysql> insert into user_data(user_id,transaction_date, sale)
values('1','2020-05-01',25),
('2','2020-05-01',35),
('3','2020-05-01',125),
('1','2020-05-02',40),
('2','2020-05-02',50),
('3','2020-05-02',50),
('1','2020-05-03',15),
('2','2020-05-03',25),
('3','2020-05-03',50);
mysql> select * from user_data;
+---------+------------------+------+
| user_id | transaction_date | sale |
+---------+------------------+------+
| 1 | 2020-05-01 | 25 |
| 2 | 2020-05-01 | 35 |
| 3 | 2020-05-01 | 125 |
| 1 | 2020-05-02 | 40 |
| 2 | 2020-05-02 | 50 |
| 3 | 2020-05-02 | 50 |
| 1 | 2020-05-03 | 15 |
| 2 | 2020-05-03 | 25 |
| 3 | 2020-05-03 | 50 |
+---------+------------------+------+
बोनस पढ़ें :MySQL में पिछले 15 दिनों का रिकॉर्ड कैसे प्राप्त करें
सबसे पहले, हमें GROUP BY का उपयोग करके प्रत्येक उपयोगकर्ता आईडी के लिए पहली तारीख मिलती है।
mysql> select user_id,min(transaction_date) from user_data group by user_id; +---------+-----------------------+ | user_id | min(transaction_date) | +---------+-----------------------+ | 1 | 2020-05-01 | | 2 | 2020-05-01 | | 3 | 2020-05-01 | +---------+-----------------------+
अब जबकि हम प्रत्येक उपयोगकर्ता आईडी के लिए सबसे पुरानी तारीख जानते हैं, हम उपयोगकर्ता समूह द्वारा पहला रिकॉर्ड प्राप्त करने के लिए इस परिणाम को अपनी मूल तालिका के साथ जोड़ते हैं।
mysql> select user_data.* from user_data,
(select user_id,min(transaction_date) as transaction_date
from user_data
group by user_id) max_user
where user_data.user_id=max_user.user_id
and user_data.transaction_date=max_user.transaction_date;
+---------+------------------+------+
| user_id | transaction_date | sale |
+---------+------------------+------+
| 1 | 2020-05-01 | 25 |
| 2 | 2020-05-01 | 35 |
| 3 | 2020-05-01 | 125 |
+---------+------------------+------+
उम्मीद है, आप MySQL में प्रत्येक समूह में पहला रिकॉर्ड प्राप्त कर सकते हैं।
Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!