Так зарплата не хранится в таблице сотрудников, но в отдельной таблице заработной платы. Таблица зарплаты содержит идентификатор сотрудника. Это делает это соотношением 1: n, то есть один сотрудник может иметь более одной зарплаты.
Я не знаю ваших таблиц, поэтому я не знаю причины этого. Возможно, у сотрудника может быть много рабочих мест, или есть часть зарплат, как базовый оклад и дополнительные зарплаты, или есть диапазон дат, который хранится с зарплатой, чтобы указать, когда он/был действителен. Я не знаю.
Предположим, мы можем просто добавить зарплату работника, чтобы получить общее количество. Затем мы выбираем имена сотрудников из таблицы сотрудников, где мы находим зарплату менее 46000 в таблице зарплат.
select ename
from employee
where eid in
(
select eid
from salary
group by eid
having sum(salary) < 46000
);
Я бы начал с '<', а не '>'. –
Вы выберете e.eid, e.ename'. Если вы хотите только имя, тогда выберите «e.ename». –