So ermitteln Sie mithilfe von case when die korrekte Summe zweier Spalten
P粉103739566
P粉103739566 2024-03-19 23:49:06
0
1
456

Ich entwickle ein Programm, das die von einem Verkäufer verkauften Einheiten verfolgt, wobei es sich entweder um einen vollständigen Deal (1) oder einen halben Deal (0,5) handeln kann. Was ich tun muss, ist einen Weg zu finden, die Summe aller Transaktionen und die Hälfte der Transaktionen nach Verkäufer-ID gruppiert zu erhalten.

Dies ist die Datenbankstruktur:

id Verkäufer_ID salesperson_two_id Verkaufsdatum
1 5 leer 02.07.2022
2 3 5 2022-07-18
3 4 leer 16.07.2022
4 5 3 12.07.2022
5 3 5 2022-07-17
6 5 leer 2022-07-18

Wenn ich nur die SUMME eines Verkäufers abrufen möchte, habe ich eine gültige Abfrage:

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;

Die Ausgabe wird wie erwartet sein:

Alle Angebote Halber Deal
2 1,5

Was ich erreichen möchte, ist, diese Ergebnisse für alle Verkäufer in der Tabelle zu erhalten, weiß aber nicht, wie ich das erreichen soll. Dies ist das Ergebnis, das ich erhalten möchte:

Verkäufer_ID Gesamttransaktionen
5 3,5
3 1,5
4 1

Ich möchte, dass die Ergebnisse nach Möglichkeit nach der Gesamtzahl der Transaktionen sortiert werden.

P粉103739566
P粉103739566

Antworte allen(1)
P粉590929392

使用 UNION ALL 获取包含每个销售人员的所有行的结果集,筛选出您想要的月份并聚合:

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;

查看演示

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage