Bagaimana untuk mendapatkan jumlah dua lajur yang betul menggunakan kes bila
P粉103739566
P粉103739566 2024-03-19 23:49:06
0
1
397

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.

P粉103739566
P粉103739566

membalas semua(1)
P粉590929392

Gunakan UNION ALL untuk mendapatkan set hasil yang mengandungi semua baris bagi setiap jurujual, tapis bulan yang anda inginkan dan agregat:

SELECT salesperson_id,
       SUM(CASE WHEN salesperson_two_id IS NULL THEN 1 ELSE 0.5 END) totalDeals
FROM (
  SELECT salesperson_id, salesperson_two_id, sold_date FROM sold_logs
  UNION ALL
  SELECT salesperson_two_id, salesperson_id, sold_date FROM sold_logs WHERE salesperson_two_id IS NOT NULL
) t
WHERE MONTH(sold_date) = 7 AND YEAR(sold_date) = 2022
GROUP BY salesperson_id
ORDER BY totalDeals DESC;

Lihat Demo.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!