SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.06.2014 16:56:45

Valery
Участник
Зарегистрирован: 22.06.2014
Сообщений: 1

Помощь с запросом

Привет! Извините заранее за мой хромающий русский. Я изучаю 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?


Прикрепленные файлы:
Attachment Icon database.jpg, Размер: 80,148 байт, Скачано: 400

Неактивен

 

#2 23.06.2014 11:42:54

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помощь с запросом

Например,

select t_empl.* from t_empl join
(SELECT empl_id, avg(salary) avg_salary, dept_id FROM t_empl, t_asnmt WHERE t_empl.id=t_asnmt.empl_id GROUP BY dept_id) t on t_empl.id=t.empl_id
where salary>t.avg_salary;
 

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson