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

PostgreSQL पर SQL के साथ एक सरणी में एकाधिक पंक्तियों को संयोजित करें

यह कुछ संस्करणों के बाद से एक पोस्टग्रेज बिल्ट-इन है, इसलिए अब आपको अपना खुद का परिभाषित करने की आवश्यकता नहीं है, नाम है array_agg()

test=> select array_agg(n) from generate_series(1,10) n group by n%2;
  array_agg   
--------------
 {1,3,5,7,9}
 {2,4,6,8,10}

(यह पोस्टग्रेज 8.4.8 है)।

ध्यान दें कि कोई ORDER BY निर्दिष्ट किया गया है, इसलिए परिणाम पंक्तियों का क्रम उपयोग की जाने वाली समूह विधि (यहां, हैश) पर निर्भर करता है, अर्थात यह परिभाषित नहीं है। उदाहरण:

test=> select n%2, array_agg(n) from generate_series(1,10) n group by (n%2);
 ?column? |  array_agg   
----------+--------------
        1 | {1,3,5,7,9}
        0 | {2,4,6,8,10}

test=> select (n%2)::TEXT, array_agg(n) from generate_series(1,10) n group by (n%2)::TEXT;
 text |  array_agg   
------+--------------
 0    | {2,4,6,8,10}
 1    | {1,3,5,7,9}

अब, मुझे नहीं पता कि आपको {10,2,4,6,8} क्यों मिलता है? और {9,7,3,1,5} , चूंकि generate_series() पंक्तियों को क्रम में भेजना चाहिए।



  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. बाधा परिभाषित आस्थगित प्रारंभ में तत्काल अभी भी आस्थगित है?

  3. त्रुटि:लाइब्रेरी लोड नहीं कर सका "/opt/PostgreSQL/9.0/lib/postgresql/plperl.so":libperl.so:

  4. PostgreSQL में EXCEPT कैसे काम करता है

  5. पोस्टग्रेएसक्यूएल गलत टाइमस्टैम्प से टाइम ज़ोन के बिना टाइम ज़ोन के साथ टाइमस्टैम्प में परिवर्तित हो रहा है