Problem z zapytaniem SQL

0

Witajcie, policzyłem ile zamówień obsłużył każdy z pracowników - baza northwind

SELECT	EmployeeID,
		COUNT(*) AS OrdersSUM
FROM	Orders
GROUP BY EmployeeID

Mógłby mi ktoś podpowiedzieć jak na podstawie EmployeeID wypisać nazwisko każdego pracownika?
Próbując w ten sposób dostaje błąd, którego szczerze mówiąc nie do końca rozumiem... Column 'Employees.LastName' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

SELECT	O.EmployeeID,
		E.LastName,
		COUNT(*)
FROM	Orders AS O JOIN Employees AS E ON O.EmployeeID = E.EmployeeID 
GROUP BY O.EmployeeID

Z góry dziękuję z pomoc.

1

Jak się nie myle musisz wszystkie nie agregowane kolumny użyc w group by, czyli będzie:

SELECT  O.EmployeeID,
        E.LastName,
        COUNT(*)
FROM    Orders AS O JOIN Employees AS E ON O.EmployeeID = E.EmployeeID 
GROUP BY O.EmployeeID, E.LastName
0

Dzięki. Nie będę zakładał nowego wątku mam kolejne pytanie. W jaki sposób zrobić zestawienie, które będzie zawierało wartości zamówień dla klientów? - Baza northwind
Zrobiłem coś takiego:

SELECT	O.CustomerID,
		O.OrderID,
		D.UnitPrice * D.Quantity AS Value
FROM	Orders O JOIN [Order Details] D ON O.OrderID = D.OrderID
WHERE	O.CustomerID IN ('ALFKI', 'ISLAT', 'SAVEA')
GROUP BY	O.OrderID, O.CustomerID, D.UnitPrice, D.Quantity
ORDER BY	O.CustomerID, Value DESC

Moje zapytanie wyrzuca wartości zamówienia danego produktu a nie całości zamówienia dlatego powtarza się OrderID. Nie wiem jak zsumować wartości poszczególnych produktów w zamówieniu.
Z góry dziękuje za pomoc.

2

Masz złe grupowanie. I brak ci sumy... Musisz pomysleć (poczytać) bardziej...

0

Wiem, że brakuje sumy tylko nie wiem w jaki sposób mam zsumować wartości poszczególnych produktów w zamówieniu, tak żeby dostać listę OrderID i wartość całego zamówienia.

0

Potrzebujesz:
CustomerId
OrderId
Sumę UnitPrice * Quantity

0

Może z innej strony zadam pytanie bo albo ja was nie mogę zrozumieć albo wy mnie. Wytłumaczcie mi w jaki sposób zsumować wartości dla tego samego ID w tabeli.
Przykład:
Tabela
ID | Cena
1 | 10
1 | 15
2 | 5
3 | 5
3 | 20
3 | 25
Oczekiwany wynik:
ID | Cena
1 | 25
2 | 5
3 | 50

1

Poradziłem sobie sam:

SELECT	CustomerID, D.suma
FROM	Orders AS O JOIN (
					SELECT	OrderID, 
							ROUND(SUM(UnitPrice * Quantity * (1 - Discount)),2) AS suma
					FROM	[Order Details]
					GROUP BY OrderID
					) AS D ON O.OrderID = D.OrderID
WHERE	O.CustomerID IN ('ALFKI', 'ISLAT', 'SAVEA')
GROUP BY	O.OrderID, O.CustomerID, D.suma
ORDER BY	O.CustomerID, D.suma ASC

1 użytkowników online, w tym zalogowanych: 0, gości: 1