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

वर्तमान स्थिति को छोड़कर सभी पिछली स्थितियों, LAST_10, LAST_50 की array_agg/माध्यिका के साथ क्वेरी तालिका

Postgres में MEDIAN . के लिए बिल्ट-इन एग्रीगेट फ़ंक्शन नहीं है . लेकिन, आप Postgres wiki में उपलब्ध फ़ंक्शन स्निपेट का उपयोग करके एक बना सकते हैं . यह स्निपेट ulib_agg उपयोगकर्ता-निर्धारित लाइब्रेरी का भी हिस्सा है। ।

एक बार यह बन जाने के बाद आप इसे SUM . जैसे किसी भी समग्र कार्य की तरह उपयोग कर सकते हैं या STRING_AGG समान window . के साथ विशिष्टता। Postgres आपको अनेक window . निर्दिष्ट करने का विकल्प प्रदान करता है अल्पविराम द्वारा अलग किए गए समग्र कार्यों की परिभाषा।

तो, एक MEDIAN प्राप्त करने के लिए पिछले 20 रिकॉर्डों में से, आपकी विंडो को इस क्वेरी के रूप में परिभाषित किया जा सकता है।

SELECT 
j.* ,  array_agg(position) over w as previous_positions,
       median(position)    over w_20 as med_20
  FROM jockeys j
WINDOW w as
(  partition by name ORDER BY id rows between 
     unbounded preceding and 1 preceding
     ),
     w_20 as
     (  partition by name ORDER BY id rows between 
           20 preceding and 1 preceding
     )

उसके ऊपर आप ROUND . लागू कर सकते हैं यदि आप दशमलव अंकों को छोटा करना चाहते हैं तो कार्य करें।

डेमो




  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. Postgresql में स्कीमा और तालिका के लिए पैरामीटर मानों का उपयोग करना

  3. PostgreSQL में jsonPath के साथ फ़ील्ड को कैसे संशोधित करें?

  4. PostgreSQL JDBC getGeneratedKeys सभी कॉलम लौटाता है

  5. सभी पोस्टग्रेज संस्करणों में सर्वर ओएस स्थानीय समय कैसे प्राप्त करें