Pomoc z zadaniem ms sql-studia

0

Witam mam 2 takie zadania do wykonania o tresci:
1.Znajdź średnie pensje dla poszczególnych etatów, liczbę pracowników oraz
Nazwisko i Płace pod najwięcej zarabiającego(jeśli więcej niż 1 rekord użyj
TOP 1)
2.Dla każdego szefa wyświetl następujące dane o najlepiej i najgorzej
zarabiającym pracowniku (jeśli więcej niż 1 rekord użyj TOP 1).

do 1 zadania napisalem takie polcenie:

MAX (P.PLACA_POD) AS 'NAJWYZSZE ZAROBKI'
FROM ZESPOLY Z JOIN  PRACOWNICY P ON  Z.ID_ZESP=P.ID_ZESP GROUP P.ETAT```

a do zadania 2 mam takie polecenie :

SELECT ID_SZEFA, MIN(PLACA_POD) AS NAJGORZEJ, MAX(PLACA_POD) AS NAJLEPIEJ FROM PRACOWNICY
GROUP BY ID_SZEFA ORDER BY MIN(PLACA_POD) DESC;```

Mam problem jak edytowac to 1 zadanie aby wyswietlić w tej tabeli z danymi nazwisko pracownika, a w tym 2 mam problem jak wyswietlic nazwisko najlepiej i nagorzej zarabiajacego pracownika

0

1.Znajdź średnie pensje dla poszczególnych etatów, liczbę pracowników oraz
Nazwisko i Płace pod najwięcej zarabiającego(jeśli więcej niż 1 rekord użyj
TOP 1)


WITH nz
AS 
(SELECT TOP 1 MAX (P.PLACA_POD) NajZarobki, Nazwisko, Imie, ETAT
FROM PRACOWNICY 
GROUP BY Nazwisko, Imie, ETAT)

SELECT AVG(P.PLACA_POD) SredniaPensja, Count(p.Nazwisko), P.ETAT, nz.Nazwisko , nz.Imie 
FROM ZESPOLY Z 
INNER JOIN  PRACOWNICY P 
ON  Z.ID_ZESP=P.ID_ZESP 
INNER JOIN nz
ON nz.NajZarobki = p.PLACA_POD
AND nz.ETAT= p.ETAT

GROUP P.ETAT, nz.Nazwisko , nz.Imie 

Pisane na szybko wiec sprawdź literówki ... i nie wiem w końcu czy Ty działy grupujesz po Etat czy Id_Zesp ... ewentualnie zamień to. Zadanie 2 robisz podobnie.

0

A takie cos moze byc do tego 1 ? tylko nie wiem jak tu dodać to nazwisko najlepszego pracownika?
SELECT P.ETAT, CAST(AVG(P.PLACA_POD) AS DECIMAL (16,2)) AS SREDNIA, COUNT(P.ETAT) AS IlePrac,
MAX (P.PLACA_POD) AS 'NAJWYZSZE ZAROBKI'
FROM ZESPOLY Z JOIN PRACOWNICY P ON Z.ID_ZESP=P.ID_ZESP GROUP BY P.ETAT

0

Pisz kod w znacznikach "kod źródłowy" żeby się lepiej czytało ... Co do pytania .. no może ale co to zmienia ? Mniej więcej przepisałeś to co ja (zrobiłeś count na innej kolumnie i sformatowałeś średnia) ino nie spełniłeś zadania ... więc jaki problem jest w rozwiązaniu podanym ?

0

co to jest to nz ?

0

CTE - poczytaj tu: https://www.sqlpedia.pl/cte-common-table-expressions/

prosto mówiąc podzapytanie które przygotowuje dane żeby użyć je w finalnym zapytaniu. nz oznacza nie mniej nie więcej niż "najwyższe zarobki" .. ot po prostu moja nazwa, allias który sobie użyłem równie dobrze można by tam napisać "dzwon" ... podobno popularne słowo teraz ..

0

wyskakuje mi Incorrect syntax near 'P'.

gdy wykonuje to polecenie

0

Mówiłem, ze pisałem szybko i żebyś sprawdził ...

WITH nz
AS 
(SELECT TOP 1 MAX (PLACA_POD) NajZarobki, Nazwisko, Imie, ETAT
FROM PRACOWNICY 
GROUP BY Nazwisko, Imie, ETAT)

Popraw tą cześć .. tak jak wyżej. Orginalnie skopiowałem od Ciebie i tam było P.PLACA_POD .. a nigdzie tu nie używamy aliasu "P".

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