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

PostgreSQL का उपयोग करके क्रॉस टैब क्वेरी में अमान्य गणना और योग

आपकी पहली गलती आसान लगती है। crosstab() . के दूसरे पैरामीटर के अनुसार समारोह, 'Dubai' पहले शहर के रूप में आना चाहिए (शहर के अनुसार क्रमबद्ध)। विवरण:

totalsales . के लिए अनपेक्षित मान और totalamount प्रत्येक name . के लिए पहली पंक्ति से मानों का प्रतिनिधित्व करते हैं समूह। "अतिरिक्त" कॉलम को इस तरह माना जाता है। विवरण:

प्रति name . के लिए राशि प्राप्त करने के लिए , अपने समग्र कार्यों पर विंडो फ़ंक्शन चलाएँ। विवरण:

select * from crosstab (
   'select name
          ,sum(count(*))   OVER (PARTITION BY name)
          ,sum(sum(price)) OVER (PARTITION BY name)
          ,city
          ,count(city)
    from   products
    group  by name,city
    order  by name,city
    '
--  ,'select distinct city from products order by 1' -- replaced
    ,$$SELECT unnest('{Dubai,London,Melborun
                      ,Moscow,Munich,Shunghai}'::varchar[])$$
) AS tb (
    name varchar(20), TotalSales bigint, TotalAmount bigint
   ,Dubai bigint
   ,London bigint
   ,Melborun bigint
   ,Moscow bigint
   ,Munich bigint
   ,Shunghai bigint
   );

बेहतर अभी तक, दूसरे पैरामीटर के रूप में एक स्थिर सेट प्रदान करें। आउटपुट कॉलम हार्ड कोडेड हैं, डेटा कॉलम को गतिशील रूप से उत्पन्न करना अविश्वसनीय हो सकता है। यदि आप एक नए शहर के साथ एक और पंक्ति रखते हैं, तो यह टूट जाएगा।
इस तरह आप अपने कॉलम को अपनी पसंद के अनुसार भी ऑर्डर कर सकते हैं। बस आउटपुट कॉलम और दूसरे पैरामीटर को सिंक में रखें।



  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. त्रुटि:XX.csv फ़ाइल को स्टेट नहीं कर सका:अज्ञात त्रुटि

  3. PostgreSQL 11 . में PL/Java 1.5.2 स्थापित करें

  4. 0 या 1 को बूलियन लार्वा पोस्टग्रेस्क्ल के रूप में स्टोर नहीं कर सकता

  5. Play ढांचे में Postgresql DB से कनेक्ट नहीं हो सकता