Saya sedang membangunkan program yang akan menjejaki unit yang dijual oleh jurujual, yang boleh sama ada tawaran penuh (1) atau separuh tawaran (0.5). Apa yang perlu saya lakukan ialah mencari cara untuk mendapatkan jumlah semua transaksi dan separuh daripada transaksi yang dikumpulkan mengikut ID jurujual.
Ini adalah struktur pangkalan data:
id | id_penjual | penjual_dua_id | Tarikh dijual |
---|---|---|---|
1 | 5 | kosong | 2022-07-02 |
2 | 3 | 5 | 2022-07-18 |
3 | 4 | kosong | 2022-07-16 |
4 | 5 | 3 | 2022-07-12 |
5 | 3 | 5 | 2022-07-17 |
6 | 5 | kosong | 2022-07-18 |
Jika saya hanya ingin mendapatkan SUM jurujual, saya mempunyai pertanyaan yang sah:
SELECT SUM(case when salesperson_id = 5 and isnull(salesperson_two_id) then 1 end) as fullDeals, SUM(case when salesperson_id != 5 and salesperson_two_id = 5 or salesperson_id = 5 and salesperson_two_id != 5 then 0.5 end) as halfDeals FROM sold_logs WHERE MONTH(sold_date) = 07 AND YEAR(sold_date) = 2022;
Keluaran akan seperti yang dijangkakan:
Semua tawaran | Separuh tawaran |
---|---|
2 | 1.5 |
Apa yang saya ingin capai ialah mendapatkan hasil ini untuk semua jurujual dalam jadual tetapi tidak tahu bagaimana untuk mencapainya. Inilah hasil yang saya nak dapat:
id_penjual | Jumlah Transaksi |
---|---|
5 | 3.5 |
3 | 1.5 |
4 | 1 |
Saya ingin keputusan disusun mengikut jumlah bilangan transaksi jika boleh.
Gunakan
UNION ALL
untuk mendapatkan set hasil yang mengandungi semua baris bagi setiap jurujual, tapis bulan yang anda inginkan dan agregat:Lihat Demo.