SQL dengan cekap mengira baris bersyarat yang diisih mengikut keutamaan
Andaikan anda mempunyai jadual yang menyimpan maklumat kerja, dengan lajur yang menunjukkan keutamaan (integer antara 1 dan 5). Untuk menjana laporan carta yang memaparkan kiraan kerja mengikut keutamaan, anda perlu mencipta lima medan tambahan, setiap satunya mengira bilangan baris dengan nilai keutamaan tertentu.
Penyelesaian terletak pada penggunaan pernyataan CASE dalam pertanyaan SELECT. Kod berikut menyediakan cara yang cekap dan berprestasi untuk mencapai output yang anda inginkan:
<code class="language-sql">SELECT jobID, JobName, SUM(CASE WHEN Priority = 1 THEN 1 ELSE 0 END) AS priority1, SUM(CASE WHEN Priority = 2 THEN 1 ELSE 0 END) AS priority2, SUM(CASE WHEN Priority = 3 THEN 1 ELSE 0 END) AS priority3, SUM(CASE WHEN Priority = 4 THEN 1 ELSE 0 END) AS priority4, SUM(CASE WHEN Priority = 5 THEN 1 ELSE 0 END) AS priority5 FROM Jobs GROUP BY jobID, JobName;</code>
Pertanyaan ini pada asasnya menggunakan fungsi SUM() untuk mengira bilangan baris bagi setiap tahap keutamaan. Walau bagaimanapun, ia juga menggunakan pernyataan CASE untuk mengecualikan baris yang tidak memenuhi syarat keutamaan tertentu. Hasilnya ialah jadual dengan medan tambahan yang mewakili kiraan keadaan.
Untuk memasukkan hanya kiraan kerja dan bukan jobID dan JobName dalam keputusan, cuma alih keluar lajur ini daripada penyataan SELECT dan alih keluar klausa GROUP BY.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Baris Bersyarat dengan Keutamaan dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!