2016-03-26 9 views
0

Ich muss die Anzahl der Produkte finden, die von Boris Davidovich (SalesmanId "6") verkauft werden. Aber ich muss den Namen in der Abfrage verwenden, und nicht die ID, und ich möchte GROUP BY verwenden.Verwenden der Gruppierung nach Funktion in SQL

Bisher ist es das, was ich geschrieben habe:

SELECT Salesmen.FirstName, Salesmen.LastName, COUNT(ProductsSales.QuantitySold) 
FROM ProductsSales LEFT JOIN Salesmen 
ON Salesmen.FirstName = Boris AND Salesmen.LastName = Davidovich 

Ich bin fest, von wo ich von hier aus gehen.

Hier sind die Daten, mit denen ich arbeiten muss.

enter image description here

Antwort

1

Unter der Annahme, die sellerid ist die salesmanid, dann müssen Sie Ihre join ändern auf diesen Feldern übereinstimmen. Die Sie können group by entsprechend verwenden, aber mit sum statt count:

SELECT s.SellerId, s.FirstName, s.LastName, SUM(ps.QuantitySold) 
FROM Salesmen S JOIN 
    ProductsSales PS ON S.sellerid = PS.salesmanid 
WHERE S.FirstName = 'Boris' AND S.LastName = 'Davidovich' 
GROUP BY s.SellerId, s.FirstName, s.LastName 

Auch gibt es keine Notwendigkeit für eine outer join es sei denn, Sie Vertriebsmitarbeiter ohne Verkäufe zurückkehren möchten. Wenn das der Fall ist, sollten Sie die inner join in eine ändern und coalesce verwenden, um 0 statt null zu erhalten.

+0

Korrekte @sgeddes Verkäufer-ID ist Salesmanid. Vielen Dank! – Brad

1

Ihre SQL-Select-Anweisung geändert wie unten dargestellt werden:

SELECT First(Salesmen.FirstName) As FN, Fist(Salesmen.LastName) As LN, SUM (ProductsSales.QuantitySold) As TotalProd 
    FROM Salesmen INNER JOIN ProductsSales ON Salesmen.SalesmanId = ProductsSales.SellerId 
    WHERE (Salesmen.FirstName= 'Boris' AND Salesmen.LastName = 'Davidovich') 
GROUP BY Salesmen.SalesmanID 
+0

Aggregation ohne 'group by' funktioniert nicht (es sei denn, dies ist 'mysql' und liefert dann nur ein zufälliges Ergebnis). Es sieht auch so aus, als wolle das OP die Datensätze "summieren" und "zählen". Also nicht sicher, das wird funktionieren ... – sgeddes

+0

Das ist richtig, es sollte SUM() sein. Es funktioniert auch in MS Access ohne GROUP BY. Mit freundlichen Grüßen, –

+0

Danke @AlexBell – Brad