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

प्रति समूह एक कॉलम के अधिकतम मान के साथ वापसी पंक्ति

यह सबक्वेरी के बिना भी संभव है:

SELECT DISTINCT
       id
      ,max(round) OVER (PARTITION BY id) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;

ठीक वही लौटाता है जो आपने मांगा था।
महत्वपूर्ण बिंदु यह है कि DISTINCT बाद लागू किया जाता है विंडो फ़ंक्शन।

एसक्यूएल फिडल।

शायद तेज़ हो क्योंकि यह एक ही विंडो का दो बार उपयोग करता है:

SELECT DISTINCT
       id
      ,first_value(round) OVER (PARTITION BY id ORDER BY round DESC) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;

अन्यथा ऐसा ही कर रहे हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएल/एसक्यूएल में मौजूदा तालिका में जोड़ने से पहले कॉलम मौजूद है या नहीं, इसकी जांच कैसे करें?

  2. CURRENT_TIMESTAMP () Oracle में फ़ंक्शन

  3. ATAN2 () Oracle में फ़ंक्शन

  4. ओरेकल इंडेक्स और ओरेकल में इंडेक्स के प्रकार उदाहरण के साथ

  5. Oracle SQL कथन में कुल पंक्तियाँ