Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में GROUP BY के अंदर ORDER BY उपयोग करना संभव है? MAX() फ़ंक्शन का उपयोग करें


MySQL में GROUP BY के साथ MAX() का उपयोग करके "GROUP BY के अंदर ORDER BY" प्रभाव प्राप्त करना

MySQL में सीधे GROUP BY के अंदर ORDER BY उपयोग नहीं कर सकते। इसके बजाय MAX() या MIN() एग्रीगेट फ़ंक्शन का उपयोग करें।

सिंटैक्स

SELECT yourNameColumnName, MAX(yourRankColumnName)
FROM yourTableName
GROUP BY yourNameColumnName;

उदाहरण

टेबल बनाएं:

mysql> create table MaxDemo (
    -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName varchar(20),
    -> UserRank int
    -> );

डेटा डालें (Sam के दो रैंक):

mysql> insert into MaxDemo(UserName, UserRank) values('Larry', 2);
mysql> insert into MaxDemo(UserName, UserRank) values('Sam', 1);
mysql> insert into MaxDemo(UserName, UserRank) values('Sam', 2);

प्रत्येक उपयोगकर्ता का अधिकतम रैंक:

mysql> select UserName, MAX(UserRank) from MaxDemo group by UserName;

परिणाम:

+----------+---------------+
| UserName | MAX(UserRank) |
+----------+---------------+
| Larry    |             2 |
| Sam      |             2 |
+----------+---------------+

अन्य एग्रीगेट फ़ंक्शन

MySQL 8.0+ में विंडो फ़ंक्शन

अधिक जटिल मामलों के लिए (जैसे प्रत्येक समूह की शीर्ष-N पंक्तियाँ):

SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY UserName ORDER BY UserRank DESC) AS rn
    FROM MaxDemo
) t WHERE rn = 1;

नोट

  • पुराने MySQL में GROUP BY के साथ गैर-एग्रीगेट कॉलम चुनने पर अनिश्चित परिणाम मिलते थे
  • MySQL 5.7+ में ONLY_FULL_GROUP_BY SQL मोड डिफ़ॉल्ट सक्षम है
  • हमेशा एग्रीगेट फ़ंक्शन या GROUP BY कॉलम का उपयोग करें
  1. - MySQL में ORDER BY FIELD को GROUP BY के साथ एकल क्वेरी में कैसे उपयोग करें

    इसके लिए, आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable ( Message text ); Query OK, 0 rows affected (1.15 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Good); Query OK, 1 row affected (0.43 sec) mysql> insert into Demo

  1. - MySQL में GROUP_CONCAT DISTINCT का उपयोग करके ID के अनुसार विशिष्ट नाम जोड़ना

    MySQL में सबक्वेरी में DISTINCT और GROUP_CONCAT के साथ ID द्वारा विशिष्ट नाम संयोजित करना GROUP_CONCAT() के साथ DISTINCT का उपयोग करने के लिए, पहले सबक्वेरी में DISTINCT लागू करें, फिर बाहरी क्वेरी में GROUP_CONCAT() करें। व्यावहारिक उदाहरण तालिका बनाना CREATE TABLE DemoTable ( Id INT, Na

  1. - MySQL में ORDER BY FIELD() से एकाधिक ID के अनुसार क्रमबद्ध करें

    FIELD() फंक्शन के साथ कस्टम क्रम में सॉर्टिंग जब आपको किसी कॉलम के मानों को एक विशिष्ट, गैर-मानक क्रम में व्यवस्थित करना हो, तो ORDER BY FIELD(column, value1, value2, ...) का उपयोग करें। टेबल और डेटा CREATE TABLE DemoTable( ClientId VARCHAR(40), ClientName VARCHAR(40) ); Query OK, 0 rows a

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
फ़ंक्शनउपयोग
MAX()अधिकतम मान (उच्चतम रैंक, नवीनतम तारीख)
MIN()न्यूनतम मान (निम्नतम रैंक, सबसे पुरानी तारीख)
SUM()कुल योग
AVG()औसत
COUNT()पंक्तियों की संख्या
GROUP_CONCAT()सभी मानों को स्ट्रिंग में जोड़ना