Problemy z T-SQL, wyszukiwanie w bazie.

0

Witam na tym zacnym forum:) mój problem dotyczy języka T-SQL. Otóż w szkole dostaliśmy zadanie w którym mamy pobierać odpowiednie informacje z bazy danych. Prawie wszystko mam zrobione ale na jednym punkcie się zaciąłem:( W treści zadania każą nam wyszukać minimalnej płacy pracownika z działu w którym jest największa średnia płaca. Mój kod nie działa i nie wiem co mam zrobić po klauzuli WHERE:(

SELECT e.department_id, MIN(salary) 'NAJNIZSZA PENSJA'
FROM employees e
where  e.department_id IN (select e.department_id, AVG(salary) As avg_salary from employees e )

tam powinno być jeszcze MAX(avg_salary) ale już na tym etapie wyrzuca błędy:(
Msg 8120, Level 16, State 1, Line 3
Column 'employees.department_id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Msg 116, Level 16, State 1, Line 3
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS
Prosiłbym bym serdecznie o jakąś wskazówkę, która pomogłaby mi rozwiązać ten problem.
Drugie pytanie brzmi czy jest jakaś funkcja w T-SQL, która zwraca dzień tygodnia z daty tzn. czy jest to poniedziałek czy środa.
Z góry dziękuję za pomoc i przepraszam za lamerską postać tego postu ale dopiera startuję w bazach, a nie chciałbym się zrazić do nich bo strasznie :)

1
SELECT 
    e.department_id
    , MIN(salary) as [NAJNIZSZA PENSJA]
FROM 
    employees e
WHERE  
    e.department_id IN (SELECT TOP 1 
                            department_id 
                        FROM 
                             employees
                        group by
                            department_id
                        ORDER BY
                            AVG(salary)  DESC)
GROUP BY
     e.department_id
    

Co do funkcji operacji na datach:
http://msdn.microsoft.com/en-us/library/ms186724.aspx

Edit: tak naprawdę to można by się jeszcze zastanowić nad zmianą wyciągania tych z najwyższą średnią, jeżeli np. będzie sytuacja że dwa departamenty mają taka samą śrenią i to tą najwyższą... Rozwiązaniem będzie dodanie with ties po top 1 w podzapytaniu

0

Dzięki Panczo:) nie pomyślałem o "SELECT TOP" tylko uparcie trzymałem się tego MAX. W tym wypadku jest tylko jeden oddział, który ma najwyższą średnią, ale ta uwaga może się przydać w przyszłości:) Zaraz zbadam dokładnie te funkcje dotyczące daty. Jeszcze raz serdecznie dziękuję, teraz widzę jakie to było proste:)

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