Szanowni użytkownicy forum,
Proszę o pomoc w rozwiązaniu zadania którego treść brzmi następująco: Podaj nazwiska pracowników, którzy obsłużyli co najmniej 4 zamówienia. Wynik jaki powinno zwrócić polecenie dołączam w załączniku wraz z graficznym przedstawieniem bazy danych. Dotychczas udało mi się napisać następującą część kodu:
SELECT E.first_name || ' ' || E.last_name AS "IMIĘ I NAZWISKO" FROM emp E, ord O WHERE O.sales_rep_id= E.id ;
Nie wiem do której tabeli powinienem się odwołać aby ograniczyć ilość przyjętych zamówień przez pracownika, w tabeli ORD pod pozycją order_filled są tylko wartości tekstowe w postaci Y bądź N które odpowiednio znaczą o przyjęciu bądź odrzuceniu zamówienia.
Jeszcze raz serdecznie proszę o pomoc.
Zadanie na studia- problem z wyświetlaniem pracowników SQL
- Rejestracja: dni
- Ostatnio: dni
- Postów: 4
- Rejestracja: dni
- Ostatnio: dni
Pytanio-podpowiedz: znasz GROUP BY, inner joiny i funkcje agregujace?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 4
W ostateczności udało mi się napisać następujące polecenie:
SELECT E.first_name || ' ' || E.last_name AS "IMIĘ I NAZWISKO" FROM emp E INNER JOIN ord O ON E.id= O.sales_rep_id ORDER BY O.order_filled;
Niestety dalej nie mam pomysłu co zrobić żeby byli brani pod uwagę tylko pracownicy którzy obsłużyli co najmniej 4 zamówienia.
- Rejestracja: dni
- Ostatnio: dni
Dlaczego zapytalem o group by i funkcje agregujace? Nie widze ich nigdzie w Twoich query a sa "niezbedne"
- Rejestracja: dni
- Ostatnio: dni
SELECT E.first_name || ' ' || E.last_name AS "IMIĘ I NAZWISKO" FROM emp E, ord O WHERE O.sales_rep_id= E.id AND COUNT(O.id)>4 GROUP BY o.sales_rep_id; - Dominik Żydak 11 minut temu
SELECT E.first_name || ' ' || E.last_name AS "IMIĘ I NAZWISKO", COUNT(O.id) AS "OBSŁUŻONYCH ZAMÓWIEŃ"
FROM emp E, ord O WHERE O.sales_rep_id = E.id
GROUP BY O.sales_rep_id
HAVING "OBSŁUŻONYCH ZAMÓWIEŃ" > 3;
(moze byc jakas literowka albo pomniejszy blad)
- Rejestracja: dni
- Ostatnio: dni
a) Po co Ci join w glownym zapytaniu? b) Zamiast = powinno in
SELECT E.first_name || ' ' || E.last_name AS "IMIĘ I NAZWISKO"
FROM emp E
WHERE E.id in (
SELECT O.sales_rep_id FROM ord O GROUP BY O.sales_rep_id HAVING COUNT(O.id) > 3
);
c) W trakcie przerabiania zapytania jednak zauwazylem masz wiecej bledow... Jak Ty to robisz? :D
(ponownie moga byc jakies bugi bo nie mam bazy na ktorej moglbym przetestowac)