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

चयन में सरणी बनाएं

यह चाल चलनी चाहिए:

SELECT a
     , sum(ab_ct)::int AS ct_total
     , count(*)::int   AS ct_distinct_b
     , array_agg(b || ', ' || ab_ct::text) AS b_arr
FROM  (
    SELECT a, b, count(*) AS ab_ct
    FROM   tbl
    GROUP  BY a, b
    ORDER  BY a, ab_ct DESC, b  -- append "b" to break ties in the count
    ) t
GROUP  BY a
ORDER  BY ct_total DESC;

रिटर्न:

  • ct_total :b . की कुल संख्या प्रति a
  • ct_distinct_b :अलग b . की गिनती प्रति a
  • b_arr :b . की सरणी प्लस आवृत्ति b , b . की आवृत्ति के अनुसार क्रमित ।

b . की कुल संख्या द्वारा आदेशित प्रति a

वैकल्पिक रूप से, आप ORDER BY का उपयोग कर सकते हैं कुल कॉल के भीतर खंड PostgreSQL 9.0 या बाद में। जैसे:

SELECT a
     , sum(ab_ct)::int AS ct_total
     , count(*)::int   AS ct_distinct_b
     , array_agg(b || ', ' || ab_ct::text ORDER BY a, ab_ct DESC, b) AS b_arr
FROM  (
    SELECT a, b, count(*) AS ab_ct
    FROM   tbl
    GROUP  BY a, b
    ) t
GROUP  BY a
ORDER  BY ct_total DESC;

स्पष्ट हो सकता है। लेकिन यह आमतौर पर धीमा होता है। और सबक्वायरी में पंक्तियों को सॉर्ट करना इस तरह के सरल प्रश्नों के लिए काम करता है। अधिक स्पष्टीकरण:



  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. Postgres अनुक्रमणिका का उपयोग क्यों नहीं कर रहा है?

  3. PostgreSQL में पावर () फ़ंक्शन कैसे काम करता है

  4. कुछ शब्दों के साथ टैग की गई सभी छवियों का चयन करने के लिए कई से कई SQL क्वेरी

  5. Postgresql क्वेरी एक वर्ष के भीतर प्रति माह गिनती पाने के लिए