Ich habe drei Tabellen in meiner Datenbank Sales
, SalesPeople
und Appliances
.Gespeicherte Prozedur Wählen Sie aus 3 Tabellen
Vertrieb
SaleDate EmployeeID AppID Qty
---------- ---------- ----- -----------
2010-01-01 1412 150 1
2010-01-05 3231 110 1
2010-01-03 2920 110 2
2010-01-13 1412 100 1
2010-01-25 1235 150 2
2010-01-22 1235 100 2
2010-01-12 2920 150 3
2010-01-14 3231 100 1
2010-01-15 1235 300 1
2010-01-03 2920 200 2
2010-01-31 2920 310 1
2010-01-05 1412 420 1
2010-01-15 3231 400 2
Verkaufspersonal
EmployeeID EmployeeName CommRate BaseSalary SupervisorID
---------- ------------------------------ ----------- ----------- ------------
1235 Linda Smith 15 1200 1412
1412 Anne Green 12 1800 NULL
2920 Charles Brown 10 1150 1412
3231 Harry Purple 18 1700 1412
Appliances
ID AppType StoreID Cost Price
---- -------------------- ------- ------------- -------------
100 Refrigerator 22 150 250
110 Refrigerator 20 175 300
150 Television 27 225 340
200 Microwave Oven 22 120 180
300 Washer 27 200 325
310 Washer 22 280 400
400 Dryer 20 150 220
420 Dryer 22 240 360
Wie kann ich dieses Ergebnis erhalten? (Dies zeigt die Rentabilität jedes der bestellten Verkäufer von den profitabelsten zu den geringsten. Brutto ist einfach die Summe der Menge der verkauften Artikel multipliziert mit dem Preis. Provision berechnet sich aus dem Brutto abzüglich der Kosten für diese Artikel (dh von Menge * (Preis-Kosten)) Nettogewinn ist der Gesamtgewinn abzüglich Provision)
Name Gross Commission Net Profit
------------- ----- ---------- ---------
Charles Brown 2380 83.5 751.5
Linda Smith 1505 83.25 471.75
Harry Purple 990 65.7 299.3
Anne Green 950 40.2 294.8
Mein Versuch:..
CREATE PROC Profitability AS
SELECT
sp.EmployeeName, (sum(s.Qty) * a.Price) as [Gross],
[Gross] - a.Cost, as [Commision],
SOMETHING as [Net Profit]
FROM
Salespeople sp, Appliances a, Sales s
WHERE
s.AppID = a.ID
AND sp.EmployeeID = s.EmployeeID
GROUP BY
sp.EmployeeName
GO
EXEC Profitability
[Schlechte Gewohnheiten zu treten: mit alten Stil JOIN] (http://sqlblog.com /blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - diese altmodische * durch Komma getrennte Liste von Tabellen * Stil wurde durch die * ersetzt richtige * ANSI 'JOIN'-Syntax im ANSI - ** 92 ** SQL-Standard (** vor mehr als 20 Jahren **) und deren Verwendung wird abgeraten –