Внутреннее соединение: это оптимальное решение? - PullRequest
0 голосов
/ 11 декабря 2010

T1: employee [id, salary]

T2: отдел [name, employeeid] (employeeid является внешним ключом для идентификатора T1)

Проблема: Написать запрос для получения имениотдела, который получает максимальную зарплату.

Мое решение:

SELECT DISTINCT name
FROM department AS a
INNER JOIN employee AS b ON a.employeeid = b.id
AND b.salary
IN (    
    SELECT max( salary )
    FROM employee AS c
)

Редактировать: Постановка задачи точная, и мы не пытаемся выяснить сотрудника, который имеет самый высокийоплата труда.Там написано ".... Отдел, который получает .....", а не "... работник, который получает ....".

Это нормально?Или это можно оптимизировать?

Ответы [ 2 ]

3 голосов
/ 11 декабря 2010

GROUP BY по названию отдела и заказ по сумм (зарплата).

SELECT department.name
FROM department
JOIN employee ON department.employeeid = employee.id
GROUP BY department.name
ORDER BY SUM(salary) DESC
LIMIT 1
0 голосов
/ 11 декабря 2010

Как насчет:

SELECT employee.id, employee.salary, department.name
FROM department, employee 
where 
employee.id = department.employeeid and
employee.salary = (select max(salary) from employee)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...