Использование MAX-агрегата между двумя таблицами - PullRequest
3 голосов
/ 24 сентября 2010

У меня есть две таблицы: работодатель и должность:

Работодатель
eID
eName

Должность
eID
зарплата

Мне нужно сопоставить мой eID между двумя таблицами, определить максимальную зарплату и распечатать только eName.Любые предложения относительно того, как я могу это сделать?Я пробовал несколько способов, но, похоже, ничего не работает.

Я не уверен, куда поместить функцию max (заработная плата):

select eName
from employer, position
where employer.eID = position.eID

Ответы [ 3 ]

3 голосов
/ 24 сентября 2010

Чтобы получить имена людей с самой высокой зарплатой ...

Использование JOIN:

SELECT e.name
  FROM EMPLOYER e
  JOIN POSITION x ON x.eid = e.eid
  JOIN (SELECT MAX(salary) AS max_salary
          FROM POSITION) y ON y.max_salary = x.salary

Использование подзапроса:

SELECT e.name
  FROM EMPLOYER e
  JOIN POSITION p ON p.eid = e.eid
 WHERE p.salary = (SELECT MAX(salary)
                     FROM POSITION)
0 голосов
/ 02 июня 2013
select e.ename,p.salary
from employer e ,position p
where p.salary=(select max(salary) from position)
and e.eid=p.eid
0 голосов
/ 24 сентября 2010

Присоединяйтесь к таблицам, сортируйте и получайте первое:

select top 1 e.eName, p.salary
from Employer e
inner join Position p on p.eID = e.eID
order by p.salary desc

(Это также возвращает зарплату, но вы, конечно, можете ее удалить, если действительно не хотите.)

...