2014-01-05 2 views
0

Я изучаю Базы данных и у меня есть вопрос относительно запросов:Заработная плата персонала в SQL

Как я могу тренировки Средняя заработная плата, включая Общий размер заработной платы и заработной платы разница?

Моя таблица выглядит следующим образом:

Staff: staffNo(PK), staffSalary 

Запрос, который я написал

SELECT staffNo, staffSalary,staffSalary - ( 
SELECT AVG(staffSalary) 
FROM Staff) AS salDiff 
FROM Staff 
WHERE staffSalary > ( 
SELECT AVG(staffSalary) 
FROM Staff) 

Этот запрос только дает мне Средняя разница Зарплата и сотрудников Фактическая зарплата, как я могу узнать фактическое среднее значение зарплаты для каждого столбца данных, которые у меня есть? Также можно использовать объединения в этом примере?

+0

_every column_ - у вас есть только столбцы, над которыми вы работаете. Есть ли еще эта таблица? –

+0

ваш запрос кажется прекрасным. Или у вас есть несколько штатных сотрудников для каждого персонала? Нет? –

+0

Да, StaffName, StaffPosition, StaffAddress, StaffEmailAddress – user2164535

ответ

0

Предполагая, что есть одна строка на одного работника, вот что я думаю, что вы просите (для всех работников, делающих выше среднего):

select staffNo, 
(Select avg(staffsalary) from staff) as avgSalary, 
(select staffSalary from staff where staffNo = S.StaffNo) as Salary, 
(Select staffSalary - (select avg(staffSalary) from staff) from staff where staffNo = S.staffNo) as salDiff 
from staff S 
where staffSalary > (Select avg(staffSalary) from staff) 

Не знаю, почему ты вам нужно присоединиться ... если вы не хотите видеть зарплаты у всех пользователей, и в этом случае вы можете просто удалить предложение where, и он покажет вам всех сотрудников.

0

попробовать этот

SELECT staffNo, staffSalary,staffSalary - (SELECT AVG(staffSalary) FROM Staff) AS salDiff, 
         (SELECT AVG(staffSalary) FROM Staff 
         WHERE staffSalary > (SELECT AVG(staffSalary) FROM Staff)) as avSalForStaffGreaterThanAverageSal 
FROM Staff 
WHERE staffSalary > (SELECT AVG(staffSalary) FROM Staff) 
+0

Этот запрос дает такую ​​же среднюю зарплату для каждого сотрудника? – user2164535

+0

, потому что это средний показатель. Что вы ожидаете? –

+0

есть ли случай, когда штатНо может иметь несколько сотрудников? –

Смежные вопросы