Привет! Извините заранее за мой хромающий русский. Я изучаю MySQL, и нам дали базу данных (я его прикрепила). Я хочу запросить только тех работников, которые зарабатывают больше чем средняя зарплата своих отдела.
Таким образом я знаю среднюю зарплату в каждом отделе:
SELECT avg(salary), dept_id FROM t_empl, t_asnmt WHERE t_empl.id=t_asnmt.empl_id GROUP BY dept_id
Но продолжать, не уверена как...
Хотя, я думала делать так....
SELECT name FROM t_empl, t_dept, t_asnmt WHERE t_empl.id=t_asnmt.empl_id AND t_empl.id=t_dept.manager_id AND Salary > (SELECT avg(salary), dept_id FROM t_empl, t_asnmt WHERE t_empl.id=t_asnmt.empl_id GROUP BY dept_id) HAVING dept_id = (SELECT avg(salary), dept_id FROM t_empl, t_asnmt WHERE t_empl.id=t_asnmt.empl_id GROUP BY dept_id)
Конечно, получаю ошибка "Operand Should Contain 1 Column(s)"... Если у меня была такая проблема в PHP , я бы сделала "for цикл". Но как это решать в SQL?
Прикрепленные файлы:
database.jpg, Размер: 80,148 байт, Скачано: 400