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

सशर्त एसक्यूएल गिनती

Postgres 9.4 या बाद के संस्करण में, समग्र FILTER . का उपयोग करें विकल्प। आमतौर पर सबसे साफ और सबसे तेज:

SELECT category
     , count(*) FILTER (WHERE question1 = 0) AS zero
     , count(*) FILTER (WHERE question1 = 1) AS one
     , count(*) FILTER (WHERE question1 = 2) AS two
FROM   reviews
GROUP  BY 1;

FILTER . के लिए विवरण खंड:

  • अतिरिक्त (विशिष्ट) फ़िल्टर वाले कुल कॉलम

यदि आप इसे संक्षिप्त चाहते हैं :

SELECT category
     , count(question1 = 0 OR NULL) AS zero
     , count(question1 = 1 OR NULL) AS one
     , count(question1 = 2 OR NULL) AS two
FROM   reviews
GROUP  BY 1;

अधिक सिंटैक्स वेरिएंट:

  • पूर्ण प्रदर्शन के लिए, SUM तेज़ है या COUNT?

उचित क्रॉसस्टैब क्वेरी

crosstab() सबसे अच्छा प्रदर्शन देता है और विकल्पों की लंबी सूची के लिए छोटा है:

SELECT * FROM crosstab(
     'SELECT category, question1, count(*) AS ct
      FROM   reviews
      GROUP  BY 1, 2
      ORDER  BY 1, 2'
   , 'VALUES (0), (1), (2)'
   ) AS ct (category text, zero int, one int, two int);

विस्तृत विवरण:

  • PostgreSQL क्रॉसस्टैब क्वेरी


  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. क्यों pg_restore सफलतापूर्वक लौट रहा है लेकिन वास्तव में मेरे डेटाबेस को पुनर्स्थापित नहीं कर रहा है?

  3. 3 कार्य जो PostgreSQL में एक तिथि से दिन, महीना और वर्ष प्राप्त करते हैं

  4. postgresql - sql - `सत्य` मानों की गणना

  5. PostgreSQL ने उपयोगकर्ताओं और समूहों को भूमिकाओं में विलय क्यों किया?