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

मैं MAX (स्तंभ मान) के साथ पहली पंक्ति का चयन कैसे कर सकता हूं?

आपकी दूसरी क्वेरी काम क्यों नहीं करती...

select   Item_No,
         Quantity
from     Rec_details
group by Item_No,
         Quantity
having   Quantity=max(Quantity);

आप Item_No . दोनों के आधार पर समूह बना रहे हैं और Quantity और Item_No प्राथमिक कुंजी प्रतीत होती है और इसमें अद्वितीय मान होते हैं इसलिए प्रत्येक समूह में केवल एक पंक्ति होगी। HAVING क्लॉज समूह के भीतर दिखता है इसलिए यह जांच करेगा कि Quantity . का मान उस समूह के भीतर अधिकतम मूल्य है लेकिन समूह के भीतर केवल एक ही मूल्य है इसलिए यह हमेशा सत्य रहेगा। आपकी क्वेरी इसके बराबर है:

SELECT DISTINCT
       Item_No,
       Quantity
FROM   Rec_details;

अधिकतम मूल्य प्राप्त करने के कुछ अन्य तरीके:

SQL Fiddle

Oracle 11g R2 स्कीमा सेटअप :

create table Rec_details (item_no, Quantity ) AS
SELECT 12507,1 FROM DUAL UNION ALL
SELECT 12549,4 FROM DUAL UNION ALL
SELECT 12100,8 FROM DUAL UNION ALL
SELECT 12501,2 FROM DUAL UNION ALL
SELECT 12201,7 FROM DUAL UNION ALL
SELECT 12509,3 FROM DUAL UNION ALL
SELECT 12080,1 FROM DUAL;

प्रश्न 1 - अधिकतम Quantity के साथ एक पंक्ति प्राप्त करें और नवीनतम item_no (1 टेबल स्कैन का उपयोग करके) :

SELECT MAX( item_no ) KEEP ( DENSE_RANK LAST ORDER BY Quantity ) AS Item_no,
       MAX( Quantity ) AS Quantity
FROM   Rec_Details

परिणाम :

| ITEM_NO | QUANTITY |
|---------|----------|
|   12100 |        8 |

प्रश्न 2 - अधिकतम Quantity के साथ एक पंक्ति प्राप्त करें और नवीनतम item_no (1 टेबल स्कैन का उपयोग करके) :

SELECT *
FROM   (
  SELECT *
  FROM   Rec_details
  ORDER BY Quantity DESC, Item_no DESC
)
WHERE ROWNUM = 1

परिणाम :

| ITEM_NO | QUANTITY |
|---------|----------|
|   12100 |        8 |

प्रश्न 3 - अधिकतम Quantity के साथ सभी पंक्तियां प्राप्त करें (1 टेबल स्कैन का उपयोग करके) :

SELECT Item_no, Quantity
FROM   (
  SELECT r.*,
         RANK() OVER ( ORDER BY Quantity DESC ) AS rnk
  FROM   Rec_details r
)
WHERE rnk = 1

परिणाम :

| ITEM_NO | QUANTITY |
|---------|----------|
|   12100 |        8 |

प्रश्न 4 - अधिकतम Quantity के साथ सभी पंक्तियां प्राप्त करें (2 टेबल स्कैन का उपयोग करके) :

SELECT Item_no,
       Quantity
FROM   Rec_Details
WHERE  Quantity = ( SELECT MAX( Quantity ) FROM Rec_Details )

परिणाम :

| ITEM_NO | QUANTITY |
|---------|----------|
|   12100 |        8 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:तालिकाओं में शामिल होने के बाद SUM () फ़ंक्शन गलत मान लौटाता है

  2. दो तालिकाओं के बीच एक से कई संबंधों के लिए Oracle चयन क्वेरी

  3. मैं Oracle में प्रदर्शित करने के लिए अपने शीर्ष 5 वेतन और निचले 5 दोनों को कैसे जोड़ूं?

  4. Oracle BLOB डेटाटाइप से RichTextBox

  5. अजगर से Oracle DB के लिए कनेक्शन टाइमआउट पैरामीटर