MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

SQL में अधिकतम मान वाली पंक्ति का चयन करने के 3 तरीके

यहां तीन उदाहरण दिए गए हैं जो किसी दिए गए कॉलम में अधिकतम मान वाली पंक्ति को खोजने और चुनने के लिए SQL का उपयोग करते हैं।

उदाहरण अधिकांश प्रमुख RDBMS में काम करते हैं, जिनमें MySQL, MariaDB, PostgreSQL, SQLite, Oracle और SQL Server शामिल हैं।

नमूना डेटा

हम निम्नलिखित डेटा के साथ शुरुआत करेंगे:

SELECT * FROM PetShow;

परिणाम:

+---------+-----------+---------+
| PetId   | PetName   | Score   |
|---------+-----------+---------|
| 1       | Wag       | 85      |
| 2       | Scratch   | 3       |
| 3       | Tweet     | 65      |
| 4       | Bark      | 8       |
| 5       | Ruff      | 15      |
| 6       | Woof      | 20      |
| 7       | Punch     | 3       |
+---------+-----------+---------+

विकल्प 1

Score . से अधिकतम मान वाली पंक्ति का चयन करने का एक उदाहरण यहां दिया गया है उपरोक्त तालिका में कॉलम:

SELECT 
    PetId,
    PetName,
    Score
FROM PetShow 
WHERE Score = ( SELECT MAX(Score) FROM PetShow );

परिणाम:

+---------+-----------+---------+
| PetId   | PetName   | Score   |
|---------+-----------+---------|
| 1       | Wag       | 85      |
+---------+-----------+---------+

हमने MAX() . का इस्तेमाल किया अधिकतम मूल्य खोजने के लिए एक सबक्वेरी के भीतर कार्य करें, और पूरी पंक्ति को बाहरी क्वेरी के साथ लौटा दें।

जब अधिकतम मान वाली एक से अधिक पंक्तियाँ हों

इस पद्धति का उपयोग करते हुए, यदि अधिकतम मान वाली एक से अधिक पंक्तियाँ हैं, तो वे सभी वापस आ जाती हैं।

मान लीजिए कि हम अपनी तालिका में मौजूदा अधिकतम स्कोर के समान स्कोर के साथ एक और पंक्ति सम्मिलित करते हैं:

INSERT INTO PetShow VALUES (8, 'Purr', 85);
SELECT * FROM PetShow;

हमारी तालिका अब इस तरह दिखती है:

+---------+-----------+---------+
| PetId   | PetName   | Score   |
|---------+-----------+---------|
| 1       | Wag       | 85      |
| 2       | Scratch   | 3       |
| 3       | Tweet     | 65      |
| 4       | Bark      | 8       |
| 5       | Ruff      | 15      |
| 6       | Woof      | 20      |
| 7       | Punch     | 3       |
| 8       | Purr      | 85      |
+---------+-----------+---------+

हम देख सकते हैं कि वाग और पूर दोनों ने उच्चतम स्कोर 85 प्राप्त किया है।

आइए उस कॉलम से अधिकतम मान वापस करने के लिए पिछली क्वेरी को फिर से चलाएं:

SELECT 
    PetId,
    PetName,
    Score
FROM PetShow 
WHERE Score = ( SELECT MAX(Score) FROM PetShow );

परिणाम:

+---------+-----------+---------+
| PetId   | PetName   | Score   |
|---------+-----------+---------|
| 1       | Wag       | 85      |
| 8       | Purr      | 85      |
+---------+-----------+---------+

अधिकतम मान वाली दोनों पंक्तियों को अपेक्षित के रूप में लौटाया जाता है।

यदि आवश्यक हो तो हम परिणाम सेट को केवल एक पंक्ति तक सीमित कर सकते हैं। सटीक कोड इस्तेमाल किए जा रहे आरडीबीएमएस पर निर्भर करेगा।

LIMIT क्लॉज का उपयोग RDBS जैसे PostgreSQL, MariaDB, MySQL और SQLite के साथ किया जा सकता है:

SELECT 
    PetId,
    PetName,
    Score
FROM PetShow 
WHERE Score = ( SELECT MAX(Score) FROM PetShow )
ORDER BY PetId ASC
LIMIT 1;

परिणाम:

+-------+---------+-------+
| PetId | PetName | Score |
+-------+---------+-------+
|     1 | Wag     |    85 |
+-------+---------+-------+

SQL सर्वर में, हम TOP का उपयोग कर सकते हैं खंड:

SELECT TOP 1
    PetId,
    PetName,
    Score
FROM PetShow 
WHERE Score = ( SELECT MAX(Score) FROM PetShow )
ORDER BY PetId ASC;

परिणाम:

+-------+---------+-------+
| PetId | PetName | Score |
+-------+---------+-------+
|     1 | Wag     |    85 |
+-------+---------+-------+

और Oracle डाटाबेस में:

SELECT
    PetId,
    PetName,
    Score
FROM PetShow 
WHERE Score = ( SELECT MAX(Score) FROM PetShow )
ORDER BY PetId ASC
FETCH FIRST 1 ROW ONLY;

परिणाम:

+-------+---------+-------+
| PetId | PetName | Score |
+-------+---------+-------+
|     1 | Wag     |    85 |
+-------+---------+-------+

विकल्प 2

यदि हम केवल एक पंक्ति को वापस करना चाहते हैं, तो हम वास्तव में अधिकांश अन्य कोड को हटा सकते हैं और केवल आदेशित परिणामों में से पहली पंक्ति प्राप्त कर सकते हैं:

SELECT 
    PetId,
    PetName,
    Score
FROM PetShow 
ORDER BY Score DESC
LIMIT 1;

परिणाम:

+---------+-----------+---------+
| PetId   | PetName   | Score   |
|---------+-----------+---------|
| 1       | Wag       | 85      |
+---------+-----------+---------+

SQL सर्वर में:

SELECT TOP 1
    PetId,
    PetName,
    Score
FROM PetShow 
ORDER BY Score DESC;

परिणाम:

+---------+-----------+---------+
| PetId   | PetName   | Score   |
|---------+-----------+---------|
| 1       | Wag       | 85      |
+---------+-----------+---------+

और Oracle डाटाबेस में:

SELECT
    PetId,
    PetName,
    Score
FROM PetShow 
ORDER BY Score DESC
FETCH FIRST 1 ROW ONLY;

परिणाम:

+---------+-----------+---------+
| PetId   | PetName   | Score   |
|---------+-----------+---------|
| 1       | Wag       | 85      |
+---------+-----------+---------+

विकल्प 3

अधिकतम मान वाली पंक्ति का चयन करने का एक और तरीका है कि आप स्वयं तालिका में शामिल हों, इस तरह:

SELECT 
    p1.PetId, 
    p1.PetName, 
    p1.Score
FROM PetShow p1
LEFT JOIN PetShow p2 ON p1.Score < p2.Score
WHERE p2.PetId IS NULL;

परिणाम:

+---------+-----------+---------+
| PetId   | PetName   | Score   |
|---------+-----------+---------|
| 1       | Wag       | 85      |
| 8       | Purr      | 85      |
+---------+-----------+---------+

पिछले उदाहरण की तरह, यदि आवश्यक हो तो हम परिणामों को एक पंक्ति (या किसी अन्य संख्या) तक सीमित कर सकते हैं।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक नेवला दस्तावेज़ उदाहरण को कॉपी/क्लोन करने का सबसे आसान तरीका?

  2. क्लस्टर नियंत्रण के साथ डेटाबेस उपयोगकर्ता प्रबंधन

  3. काम पूरा करने के बाद नेवला का कनेक्शन ठीक से बंद कर दें

  4. एडब्ल्यूएस लैम्ब्डा पर MongoDB कनेक्शन पूलिंग का उपयोग कैसे करें?

  5. जैक्सन के साथ एक वर्ग को दो अलग-अलग तरीकों से क्रमबद्ध करें