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

MySQL में प्रत्येक समूह में पहला रिकॉर्ड कैसे प्राप्त करें

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

  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. शामिल हों बनाम उप-क्वेरी

  3. PHP का उपयोग करके MySql तालिकाओं को कैसे आयात/पुनर्स्थापित करें?

  4. रोलिंग के आधार पर MySQL से पुरानी पंक्तियों को हटाने का सबसे अच्छा तरीका क्या है?

  5. MySQL को कैसे सुरक्षित करें:भाग दो