[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: SQL задача - средняя зарплата
Valeriya12
Вот задача: Найти среднюю зарплату каждого отдела, но только в тех отделах в чём менеджер отдела не зарабатывает самую большую зарплату.

То есть, правильный ответ будет:

avg(salary) dept_id
4666.6667 0A01
3533.3333 0C03

Чтоб уточнять таблицу - то, у кого есть manager_id, значит он менеджер. dept_id показывает отдел.


Вот моя попытка. Я знаю, что я близко к решению, но что-то не совсем ладится...


SELECT 
avg(salary), dept_id
FROM t_empl, t_asnmt
WHERE t_empl.id=t_asnmt.empl_id
AND
(
SELECT salary, dept_id
FROM t_empl, t_dept, t_asnmt
WHERE t_empl.id=t_asnmt.empl_id AND t_empl.id=t_dept.manager_id
) managerssal <
(

SELECT avg(salary), dept_id
FROM t_empl, t_asnmt
WHERE t_empl.id=t_asnmt.empl_id GROUP BY dept_id
) as deptavg
AND managerssal.dept_id= deptavg.dept_id
GROUP BY dept_id
sergeiss
По сути вопроса не отвечу, но предлагаю начать с того, что сам начальный запрос сделать более "удобочитаемым"

SELECT 
avg(salary), dept_id
FROM t_empl, t_asnmt
WHERE t_empl.id=t_asnmt.empl_id
AND
(
SELECT salary, dept_id
FROM t_empl, t_dept, t_asnmt
WHERE t_empl.id=t_asnmt.empl_id AND t_empl.id=t_dept.manager_id
) managerssal <
(

SELECT avg(salary), dept_id
FROM t_empl, t_asnmt
WHERE t_empl.id=t_asnmt.empl_id GROUP BY dept_id
) as deptavg
AND managerssal.dept_id= deptavg.dept_id
GROUP BY dept_id


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valeriya12
Да, отредактировала. Мне было нужно раньше это сделать, спасибо. smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.