Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengira Kejadian Bersyarat dengan Cekap dalam PostgreSQL?

Bagaimanakah Saya Boleh Mengira Kejadian Bersyarat dengan Cekap dalam PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2025-01-24 06:21:10
asal
396 orang telah melayarinya

How Can I Efficiently Count Conditional Occurrences in PostgreSQL?

Pengiraan keadaan PostgreSQL: kaedah pengoptimuman

Apabila mengira kejadian data dalam jadual pangkalan data, pernyataan bersyarat mungkin kelihatan panjang. Nasib baik, PostgreSQL menyediakan penyelesaian yang mudah dan cekap.

PENAPIS pilihan pengagregatan

Untuk PostgreSQL 9.4 dan lebih baru, manfaatkan pilihan pengagregatan FILTER untuk kecekapan terbaik:

<code class="language-sql">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;</code>
Salin selepas log masuk

Sintaks ringkas

Jika kesederhanaan adalah keutamaan anda:

<code class="language-sql">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;</code>
Salin selepas log masuk

Pertanyaan silang silang

Untuk mengendalikan senarai pilihan yang besar dan mengejar prestasi yang lebih tinggi, pertimbangkan untuk menggunakan fungsi tab silang():

<code class="language-sql">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);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Kejadian Bersyarat dengan Cekap dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan