Rumah >pangkalan data >tutorial mysql >Bagaimana Mengira Nilai Lajur Bersyarat dalam SQL: Contoh Berasaskan Keutamaan?

Bagaimana Mengira Nilai Lajur Bersyarat dalam SQL: Contoh Berasaskan Keutamaan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-10 06:56:43373semak imbas

How to Count Conditional Column Values in SQL:  A Priority-Based Example?

kiraan lajur bersyarat SQL

Pertimbangkan jadual yang dipanggil "Pekerjaan" dengan struktur berikut:

<code>jobId, jobName, Priority</code>

Di mana "Keutamaan" ialah integer antara 1 dan 5.

Pernyataan masalah:

Anda perlu membuat pertanyaan yang mengira bilangan baris untuk setiap tahap keutamaan (1 hingga 5) dalam jadual "Pekerjaan". Pertanyaan harus mengembalikan lajur yang dinamakan "Keutamaan1" melalui "Keutamaan5", yang mewakili kiraan ini.

Penyelesaian:

Untuk melakukan ini, gunakan pernyataan SQL berikut:

<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>

Penjelasan:

  • Penyata CASE menilai lajur "Keutamaan" setiap baris.
  • Jika "Keutamaan" adalah sama dengan nilai yang ditentukan (1, 2, 3, 4 atau 5), maka ia menyumbang 1 kepada kiraan.
  • Jika "Keutamaan" tidak sama dengan nilai yang ditentukan, ia menyumbang 0.
  • Fungsi SUM mengagregatkan kiraan ini untuk setiap tahap keutamaan.
  • Klausa GROUP BY mengumpulkan hasil mengikut "jobId" dan "jobName" (dengan andaian anda mahu memasukkan lajur ini dalam hasil carian).

NOTA: Jika anda ingin mengecualikan "jobId" dan "jobName", hanya alih keluar mereka daripada klausa SELECT dan GROUP BY.

Atas ialah kandungan terperinci Bagaimana Mengira Nilai Lajur Bersyarat dalam SQL: Contoh Berasaskan Keutamaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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