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

कस्टम कुल कार्य

आप एक माध्य गणना दिखा रहे हैं, लेकिन आप चाहते हैं कि पहला टेक्स्ट मान आपको दिखाई दे?

नीचे यह कैसे करना है। मान लें कि आप पहला गैर-शून्य मान चाहते हैं, अर्थात। यदि नहीं, तो आपको यह ट्रैक करना होगा कि आपके पास पहले से कोई मान है या नहीं।

संचायक फ़ंक्शन को plpgsql और sql के रूप में लिखा जाता है - plpgsql एक आपको चर नामों का उपयोग करने देता है और इसे डीबग भी करता है। यह केवल पिछले संचित मूल्य और नए मान के विरुद्ध COALESCE का उपयोग करता है और पहला गैर-शून्य लौटाता है। तो - जैसे ही आपके पास एक्युमुलेटर में एक नॉन-नल होता है, बाकी सब कुछ अनदेखा कर दिया जाता है।

यदि आप PostgreSQL के आधुनिक (8.4+) संस्करण पर हैं, तो आप इस प्रकार की चीज़ के लिए "first_value" विंडो फ़ंक्शन पर भी विचार कर सकते हैं।

http://www.postgresql.org/docs/9.1/static /functions-window.html

एचटीएच

BEGIN;

CREATE FUNCTION remember_first(acc text, newval text) RETURNS text AS $$
BEGIN
    RAISE NOTICE '% vs % = %', acc, newval, COALESCE(acc, newval);
    RETURN COALESCE(acc, newval);
END;
$$ LANGUAGE plpgsql IMMUTABLE;

CREATE FUNCTION remember_first_sql(text,text) RETURNS text AS $$
    SELECT COALESCE($1, $2);
$$ LANGUAGE SQL IMMUTABLE;

-- No "initcond" means we start out with null
--      
CREATE AGGREGATE first(text) (
    sfunc = remember_first,
    stype = text
);

CREATE TEMP TABLE tt (t text);
INSERT INTO tt VALUES ('abc'),('def'),('ghi');

SELECT first(t) FROM tt;

ROLLBACK;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे कोश () PostgreSQL में काम करता है

  2. यदि मौजूद नहीं है तो PostgreSQL तालिका बनाएं

  3. अद्यतन करने का मतलब है कि सबक्वायरी में मूल्य कहां है जिसमें ग्रुप बाय है तो कोई रेस-कंडीशन समस्या नहीं है?

  4. प्रश्न में प्रश्न चिह्न ऑपरेटर

  5. इस क्वेरी को 0 गिनती मान के साथ पंक्तियों को कैसे वापस करें?