Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Dua Set Data Berbeza dengan Pengagregatan Bersyarat dalam Satu Pertanyaan SQL?

Bagaimana untuk Mendapatkan Dua Set Data Berbeza dengan Pengagregatan Bersyarat dalam Satu Pertanyaan SQL?

Mary-Kate Olsen
Lepaskan: 2025-01-21 12:36:10
asal
408 orang telah melayarinya

How to Retrieve Two Distinct Data Sets with Conditional Aggregation in a Single SQL Query?

Mengambil Dua Set Data Berasingan Dengan Cekap Menggunakan Pertanyaan SQL Tunggal

Contoh ini menunjukkan cara untuk mendapatkan semula dua set data yang berbeza daripada satu pertanyaan SQL, mengelakkan keperluan untuk berbilang pertanyaan. Kami akan menggunakan jadual transactions (mengandungi lajur id, account_id, budget_id, points dan type) untuk menggambarkan. Matlamatnya adalah untuk mendapatkan:

  1. Jumlah points bagi setiap budget_id dengan type ialah 'peruntukan'.
  2. Jumlah points bagi setiap budget_id dengan type adalah 'isu'.

Penyelesaian: Pengagregatan Bersyarat

Satu pertanyaan SQL boleh mencapai ini menggunakan pengagregatan bersyarat:

<code class="language-sql">SELECT 
    budget_id,
    SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated_points,
    SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued_points
FROM 
    transactions
GROUP BY 
    budget_id;</code>
Salin selepas log masuk

Pertanyaan ini menggunakan pernyataan CASE (atau IF dalam sesetengah sistem pangkalan data) untuk menjumlahkan points secara bersyarat. Jika type ialah 'peruntukan', points ditambahkan pada allocated_points; jika tidak, 0 ditambah. Logik yang sama digunakan untuk issued_points. Klausa GROUP BY memastikan jumlah dikira untuk setiap budget_id unik.

Keluaran Jangkaan:

Pertanyaan akan mengembalikan set hasil yang serupa dengan ini:

<code>budget_id | allocated_points | issued_points
----------|-------------------|---------------
    434   |       200000      |     100
    242   |       100000      |     5020
    621   |        45000      |     3940</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Dua Set Data Berbeza dengan Pengagregatan Bersyarat dalam Satu Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan