![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 26.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
proszę o pomoc lub radę w napisaniu instrukcji SELECT. 1. Znajdź liczbę pracowników zarabiających więcej niż wynosi średnia pensja w ich dziale oraz średnią pensję takich pracowników w każdym dziale. Ponadto zapytanie ma wyświetlić numer i nazwę działu oraz liczbę pracowników i średnią pensję w każdym dziale, a jego wynik ma być posortowany malejąco wg liczby pracowników zarabiających więcej niż wynosi średnia pensja w ich dziale. 2. Znajdź liczbę pracowników zarabiających więcej niż wynosi średnia pensja w ich dziale oraz średnią pensję takich pracowników w każdym dziale, w którym minimalna pensja jest wyższa od minimalnej pensji w dziale nr 20. Ponadto zapytanie ma wyświetlić numer i nazwę działu oraz liczbę pracowników i średnią pensję w każdym dziale, a jego wynik ma być posortowany malejąco według liczby pracowników zarabiających więcej niż wynosi średnia pensja w ich dziale. Struktura Tabel: departments DEPARTMENT_ID : DEPARTMENT_NAME : MANAGER_ID : LOCATION_ID 10 : Administr : 200 : 1700 20 : Buyers : 201 : 1800 ... : ... : ... : ... employees EMPLOYEE_ID : FIRST_NAME : LAST_NAME : SALARY : DEPARTMENT_ID : DEPARTMENT_NAME 1000 : Mark : Win : 4000 : 20 : Sale 1001 : John : Beck : 3490 : 50 : Marketing ... : ... : ... : ... : ... : ... Proszę o sugestię, z góry dzięki. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 26.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
A macie jakieś pomysły jak poradzić sobie z 3 zadaniem ?
Nikt nic nie poradzi ? Może jakaś sugestia ? W każdym dziale znajdę pracowników, którzy zarabiają więcej niż wynosi średnia pensja w ich dziale więc dla każdego działu wyświetli mi się co najmniej jedna osoba. Ale jak do tego dodać średnią pensję pracowników w których działach minimalna pensja jest wyższa od tej w dziale 20 ? Wtedy dla reszty pracowników, którzy nie spełniają warunków wyświetli się w wierszu wartość 0 ? SELECT department_id, department_name, ilosc_prac, count(department_id) as zarabiajacy_wiecej, avg(salary) as srednia_zar_wiecej, rednia_dzial from (SELECT el.department_name, count(el.last_name) as ilosc_prac, el.department_id, el.salary, avg(e.salary) as srednia_dzial from employees el, employees e where el.department_id=e.department_id group by el.last_name, el.salary, el.department_name, el.department_id, e.department_id having el.salary>avg(e.salary) order by el.department_id) group by department_id, department_name, srednia_dzial, ilosc_prac order by zarabiajacy_wiecej; Należy wykorzystać CASE ? Może UNION ? Ten post edytował K1cek 3.08.2017, 08:35:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 14:58 |