Gunakan berbilang klausa WHERE untuk mendapatkan semula data yang berbeza
Dalam SQL, anda boleh menggunakan klausa WHERE untuk menapis baris tertentu, dengan itu menyesuaikan cara data diambil daripada jadual. Masalah ini membentangkan cabaran untuk mengekstrak dua set data berbeza daripada jadual yang sama, setiap satu memenuhi klausa WHERE yang berbeza.
Contoh jadual "urus niaga" menyimpan rekod transaksi kewangan yang dicirikan oleh ID, ID akaun, ID belanjawan, mata yang diperoleh dan jenis transaksi mereka. Tugasnya adalah untuk mengira jumlah mata yang diperuntukkan dan jumlah mata yang dikeluarkan untuk setiap ID belanjawan unik.
Untuk melakukan ini, satu pertanyaan SQL boleh dibina yang menggabungkan klausa WHERE yang diperlukan. Pertanyaan berikut mencapai hasil yang diingini:
<code class="language-sql">SELECT budget_id, SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated, SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued FROM transactions GROUP BY budget_id</code>
Pertanyaan ini menggunakan penyata CASE WHEN untuk menjumlahkan mata secara bersyarat berdasarkan jenis transaksi. Untuk setiap ID belanjawan, pertanyaan mengira jumlah mata yang dikaitkan dengan jenis "peruntukan" dan menyimpannya dalam lajur "diperuntukkan". Begitu juga, ia mengira jumlah mata jenis "isu" dan menyimpannya dalam lajur "dikeluarkan". Dengan mengumpulkan hasil mengikut ID belanjawan, pertanyaan menghasilkan set hasil yang dijangka, yang mengandungi lajur berasingan untuk mata yang diperuntukkan dan mata yang dikeluarkan untuk setiap belanjawan.
Pertanyaan ini menunjukkan fleksibiliti SQL dalam menggabungkan klausa WHERE untuk mendapatkan semula subset data tertentu daripada jadual, menjadikannya alat yang berkuasa untuk melaksanakan tugas mendapatkan data yang kompleks.
Atas ialah kandungan terperinci Bagaimanakah Pertanyaan SQL Tunggal Dapat Mendapatkan Jumlah Berbeza Berdasarkan Keadaan Klausa Berbilang WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!