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

चुनिंदा क्वेरी में लूपिंग

क्या सरणियाँ आपके लिए अच्छी हैं? (SQL Fiddle)

select
    id,
    sum(totalcol) as total,
    array_agg(somecol) as somecol,
    array_agg(totalcol) as totalcol
from (
    select id, somecol, count(*) as totalcol
    from mytable
    group by id, somecol
) s
group by id
;
 id | total | somecol | totalcol 
----+-------+---------+----------
  1 |     6 | {b,a,c} | {2,1,3}
  2 |     5 | {d,f}   | {2,3}

9.2 में JSON ऑब्जेक्ट्स का एक सेट होना संभव है (Fiddle)

select row_to_json(s)
from (
    select
        id,
        sum(totalcol) as total,
        array_agg(somecol) as somecol,
        array_agg(totalcol) as totalcol
    from (
        select id, somecol, count(*) as totalcol
        from mytable
        group by id, somecol
    ) s
    group by id
) s
;
                          row_to_json                          
---------------------------------------------------------------
 {"id":1,"total":6,"somecol":["b","a","c"],"totalcol":[2,1,3]}
 {"id":2,"total":5,"somecol":["d","f"],"totalcol":[2,3]}

9.3 में, lateral . को जोड़ने के साथ , एक एकल वस्तु (Fiddle)

select to_json(format('{%s}', (string_agg(j, ','))))
from (
    select format('%s:%s', to_json(id), to_json(c)) as j
    from
        (
            select
                id,
                sum(totalcol) as total_sum,
                array_agg(somecol) as somecol_array,
                array_agg(totalcol) as totalcol_array
            from (
                select id, somecol, count(*) as totalcol
                from mytable
                group by id, somecol
            ) s
            group by id
        ) s
        cross join lateral
        (
            select
                total_sum as total,
                somecol_array as somecol,
                totalcol_array as totalcol
        ) c
) s
;
                                                                to_json                                                                
---------------------------------------------------------------------------------------------------------------------------------------
 "{1:{\"total\":6,\"somecol\":[\"b\",\"a\",\"c\"],\"totalcol\":[2,1,3]},2:{\"total\":5,\"somecol\":[\"d\",\"f\"],\"totalcol\":[2,3]}}"

9.2 में lateral के बजाय उपश्रेणियों का उपयोग करके एकल वस्तु को अधिक जटिल तरीके से रखना भी संभव है



  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. एसक्यूएल तिथियों की सीमा से अधिक औसत स्कोर का चयन

  4. PostgreSQL को अपरकेस टेबल नाम क्यों पसंद नहीं हैं?

  5. Django/Python:सेटिंग पर पॉइंट टू पॉइंट अपडेट करें।AUTH_USER_MODEL