Pengiraan bersyarat mengikut lajur
Penerangan masalah:
Andaikan anda mempunyai jadual dengan lajur jobId
, jobName
dan Priority
, dengan Priority
ialah integer antara 1 dan 5. Matlamatnya adalah untuk menjana pertanyaan yang mengira bilangan baris dengan nilai Priority
tertentu dan memaparkan keputusan dalam format yang sesuai untuk membuat laporan carta.
Penyelesaian:
Untuk mencapai hasil yang diingini, anda boleh menggunakan gabungan ungkapan bersyarat dan fungsi agregat:
<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 menggunakan ungkapan CASE
untuk menyemak nilai Priority
tertentu dan menetapkan nilai 1 jika syarat itu benar dan 0 sebaliknya. Nilai ini kemudiannya dijumlahkan untuk setiap kombinasi jobID
dan JobName
.
GROUP BY
memastikan hasil dikumpulkan mengikut nilai unik jobID
dan JobName
, dengan itu memberikan pecahan setiap kiraan kerja.
Dengan memformatkan hasil dengan cara ini, anda boleh membenamkannya dengan mudah ke dalam laporan carta untuk menggambarkan pengagihan nilai Priority
untuk pekerjaan yang berbeza.
Atas ialah kandungan terperinci Bagaimana Mengira Keutamaan Kerja dan Menjana Data Sedia Carta?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!