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

postgresql - तालिका में प्रत्येक कॉलम की गणना (कोई शून्य मान नहीं)

आप जो चाहते हैं उसे पाने के लिए यह क्वेरी डीएमएल स्टेटमेंट बनाएगी।

SELECT 'SELECT ' || string_agg('count(' || quote_ident(attname) || ')', ', ')
    || 'FROM '   || attrelid::regclass
FROM   pg_attribute
WHERE  attrelid = 'mytbl'::regclass
AND    attnum  >= 1           -- exclude tableoid & friends (neg. attnum)
AND    attisdropped is FALSE  -- exclude deleted columns
GROUP  BY attrelid;

रिटर्न:

SELECT count(col1), count(col2), count(col3), ...
FROM   mytbl

आप इसे स्वचालित रूप से भी निष्पादित कर सकते हैं। लेकिन योजना SQL में नहीं, आपको EXECUTE . की आवश्यकता है plpgsql फ़ंक्शन में या DO . में उसके लिए स्टेटमेंट (PostgreSQL 9.0 या बाद का)।

string_agg() . के लिए आपको पोस्टग्रेज 9.0 या बाद के संस्करण की भी आवश्यकता है समारोह। पुराने संस्करणों में, आप स्थानापन्न कर सकते हैं:array_to_string(array_agg(...), ', ')

आप विशेष कलाकारों के बारे में सोच सकते हैं 'mytbl'::regclass . मैनुअल में ऑब्जेक्ट पहचानकर्ता प्रकारों के बारे में और पढ़ें।

बीटीडब्ल्यू:NULL मान COUNT(col) में नहीं जुड़ते हैं डिफ़ॉल्ट रूप से।

mytbl . के लिए (स्कीमा-योग्य) तालिका नाम बदलें . आपके मामले में यह होना चाहिए:

...
WHERE  attrelid = 'geoproject.mes_wastab'::regclass
...

यदि आप मिश्रित केस का उपयोग कर रहे हैं या अन्यथा गड़बड़ पहचानकर्ता (उद्धरण नोट करें):

...
WHERE  attrelid = '"gEopRoject"."MES_wastab"'::regclass
...


  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. दिनांक सीमा के अनुसार SQL समूह

  3. विशिष्ट jsonb सरणी मान को अद्यतन करने के लिए jsonb_set() का उपयोग करना

  4. पीएल/पीजीएसक्यूएल फ़ंक्शन में चयन करें या निष्पादित करें

  5. कैसे POSITION () PostgreSQL में काम करता है