Witam!
Poddaje się, zostało mi jedno zapytanie z ćwiczeń zadanych do domu, ale niestety chyba sobie z nim samodzielnie nie poradzę.
Mam tabelę pracowników - gdzie dwa pola to EmployeeId oraz ReportsTo (id pracownika, który jest szefem).
Treść zadań:
- Dla każdego pracownika (imię i nazwisko) podaj łączną wartość
zamówień obsłużonych przez tego pracownika - Ogranicz wynik z pkt 1 tylko do pracowników
a) którzy mają podwładnych
b) którzy nie mają podwładnych
z 1 oraz 3b sobie poradziłem. Pytanie jak ugryźć 3a.
Podaje zapytania które napisałem:
-- 4.1.
SELECT e.firstname, e.lastname, SUM(od.quantity*od.unitprice*(1-od.discount))
FROM employees AS e
INNER JOIN orders AS o
ON e.employeeid = o.employeeid
INNER JOIN [order details] AS od
ON o.orderid = od.orderid
GROUP BY e.firstname, e.lastname
ORDER BY 3 DESC
-- 4.3.a. !!! z tym mam problem
SELECT DISTINCT e.firstname, e.lastname, SUM(od.quantity*od.unitprice*(1-od.discount))
FROM employees AS e
INNER JOIN employees as ee
ON e.employeeid = ee.reportsto
INNER JOIN orders AS o
ON e.employeeid = o.employeeid
INNER JOIN [order details] AS od
ON o.orderid = od.orderid
GROUP BY e.firstname, e.lastname
ORDER BY 3 DESC
-- 4.3.b.
SELECT e.firstname, e.lastname, SUM(od.quantity*od.unitprice*(1-od.discount))
FROM employees AS e
LEFT OUTER JOIN employees AS ee
ON e.employeeid = ee.reportsto
LEFT OUTER JOIN orders AS o
ON e.employeeid = o.employeeid
LEFT OUTER JOIN [order details] AS od
ON o.orderid = od.orderid
WHERE ee.employeeid IS NULL
GROUP BY e.firstname, e.lastname
ORDER BY 3 DESC