Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Kejadian Bersyarat dengan Cekap dalam 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>
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>
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>
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!