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

मेरी बुद्धि के लिए, अधिकतम, उपश्रेणियों द्वारा बहुत अधिक आदेश

आप row_number() . का उपयोग कर सकते हैं दो बार:

select  *
from    (
        select  *
        ,       row_number() over (partition by OT order by OI desc) as rn2
        from    (
                select  *
                ,       row_number() over (partition by EI, BI, OT 
                                           order by created_at desc) as rn1
                from    Odds
                where   EI = 1 -- for event 1
                ) sub1
        where   rn1 = 1 -- Latest row per EI, BI, OT
        ) sub2
where   rn2 = 1 -- Highest OI per OT

लेकिन अगर तालिका बढ़ती रहती है, तो यह खराब प्रदर्शन करेगा। आप OddsHistory जैसी इतिहास तालिका जोड़ सकते हैं, और पुराने ऑड्स को वहां स्थानांतरित कर सकते हैं। जब ऑड्स टेबल में केवल नवीनतम ऑड्स होते हैं, तो आपकी क्वेरी बहुत आसान हो जाती है।

SQL Fiddle पर लाइव उदाहरण।




  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 फ़ंक्शन बनाएं जो मौजूद नहीं है (अभी तक)

  2. मैं अक्षांश/देशांतर युग्म को PostGIS भूगोल प्रकार में कैसे परिवर्तित करूं?

  3. PostgreSQL में न्यूलाइन चार पर एक मान को एकाधिक पंक्तियों में कैसे विभाजित करें?

  4. मैं Postgres में मॉड्यूल कैसे आयात करूं या एक्सटेंशन कैसे स्थापित करूं?

  5. SQL :2 टेबल से एक पूरा रिकॉर्ड बनाएं