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

भाग 2:वास्तव में धुरी के बिना विभाजन आधारित क्वेरी का योग कैसे प्राप्त करें

आपके पास मौजूद समाधान का उपयोग करें (या तो एक, मैं स्पष्ट कारणों के लिए सरणी समाधान पसंद करता हूं), इसे एक सीटीई में डालें, फिर योग की गणना के लिए यूनियन का उपयोग करें:

with students as (
  select studentnr, 
         name, 
         gradenumber, 
         languages[1] as language_1,
         languages[2] as language_2,
         languages[3] as language_3,
         languages[4] as language_4,
         languages[5] as language_5
  FROM (       
    SELECT s.studentnumber as studentnr, 
           p.firstname AS name,
           sl.gradenumber as gradenumber,
           array_agg(DISTINCT l.text) as languages
    FROM student s
        JOIN pupil p ON p.id = s.pupilid    
        JOIN pupillanguage pl on pl.pupilid = p.id
        JOIN language l on l.id = pl.languageid
        JOIN schoollevel sl ON sl.id = p.schoollevelid
    GROUP BY s.studentnumber, p.firstname
  ) t
)
select *
from students
union all
select null as studentnr,
       null as name, 
       null as gradenumber, 
       count(language_1)::text,
       count(language_2)::text, 
       count(language_3)::text, 
       count(language_4)::text, 
       count(language_5)::text
from students;

कुल कार्य जैसे count() NULL ignore पर ध्यान न दें मान, इसलिए यह केवल उन पंक्तियों की गणना करेगा जहां एक भाषा मौजूद है।

यूनियन के प्रश्नों में सभी कॉलम के डेटा प्रकारों का मिलान होना चाहिए, इसलिए यदि पहली क्वेरी उस कॉलम को टेक्स्ट (या वर्कर) के रूप में परिभाषित करती है तो आप दूसरी क्वेरी में कॉलम में पूर्णांक मान वापस नहीं कर सकते हैं। इसलिए count() . का परिणाम text . पर डालने की जरूरत है

दूसरी क्वेरी में कॉलम उपनाम वास्तव में आवश्यक नहीं हैं, लेकिन मैंने उन्हें यह दिखाने के लिए जोड़ा है कि कॉलम सूचियों का मिलान कैसे करना है




  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. द्वीपों में टाइमस्टैम्प कैसे समूहित करें (मनमाने ढंग से अंतर के आधार पर)?

  3. PostgreSQL द्वारा पेश किया गया JSONB की व्याख्या

  4. जेपीए के साथ पोस्टग्रेज JSONB डेटाटाइप का उपयोग कैसे करें?

  5. परमाणु अद्यतन .. पोस्टग्रेज में चुनें