SQL-запросы, связанные с присоединением - PullRequest
0 голосов
/ 11 января 2019

Есть три таблицы -

employee (emp_id, emp_name)
department (emp_id, emp_dept)
salary (emp_id, emp_sal)

Мне нужно узнать максимальную зарплату в каждом отделении.
Нужны следующие столбцы в выводе -

emp_id, emp_name, emp_sal, emp_dept

Примечание -
emp_id - это первичный ключ.
В выходных данных emp_sal должна быть максимальной зарплатой отдела.

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Я поместил пример данных с запросом ниже. Я проверил это в SQL Server

create table #dept(emp_id int, emp_dept varchar(30))
create table #emp(emp_id int, emp_name varchar(30))
create table #salary(emp_id int, salary int)

insert into #dept values(1,'HR'), (2,'HR'), (3,'Finance')
insert into #emp values (1, 'Venkat'), (2,'raman'), (3, 'Murugan')
insert into #salary values(1, 5000), (2, 10000), (3, 20000)

select emp_dept, emp_id, emp_name
from
(
select d.emp_dept,d.emp_id, e.emp_name, Row_Number() over (partition by d.emp_dept order by s.salary desc) as rnk
from #Dept AS d
LEFT JOIN #Salary AS s
ON d.emp_id = s.emp_id
LEFT JOIN #emp AS e
ON d.emp_id = e.emp_id
) as t
where rnk = 1
0 голосов
/ 11 января 2019

Всегда старайтесь сначала извлекать некоторые данные, используя простой запрос, а затем просто заставляйте его фильтровать одну за другой, так как вы хотите получить данные из этого запроса, чтобы вы получили ясное представление. Также попробуйте запрос ниже.

SELECT emp_id, emp_name, emp_dept, max(emp_sal) from (SELECT emp_id, emp_name, emp_dept, emp_sal from salary inner join department on salary.emp_id = department.emp_id inner join employee on salary.emp_id = employee.emp_id ) group by emp_dept

Также смотрите эту ссылку. ВЫБРАТЬ строки с MAX (значение столбца), DISTINCT по другому столбцу

0 голосов
/ 11 января 2019

Попробуйте следующий запрос:

   select max(emp_salary), emp_dept  from department d join salary s on d.emp_id = s.emp_id group by emp_dept
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...