Удаление дубликатов путем добавления их в [SQL] - PullRequest
0 голосов
/ 06 октября 2018

У меня есть такой запрос:

select employee_id, salary
from salary
left join employee on salary.employee_id=employee.id_employee;

Он возвращает мне эти результаты

EMPLOYEE ID  | SALARY
-------------|-------
1            |     50
2            |     50
3            |     50
1            |     30

Как мне удалить дубликаты, добавив их, например:

EMPLOYEE ID |  SALARY
------------|--------
1           |      80
2           |      50
3           |      50

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Это именно то, для чего предназначено group by.Вам нужно будет group by emplopyee_id и указать, как вы хотите агрегировать зарплату:

SELECT   employee_id, SUM(salary)
FROM     salary
GROUP BY employee_id
0 голосов
/ 06 октября 2018

Нет никаких оснований для left join от salary до employee.Предположительно, каждый employee_id в salary относится к действующему сотруднику.Таким образом, это должно делать то, что вы хотите:

select s.employee_id, sum(s.salary) as salary
from salary s
group by s.employee_id;

Если вы хотите, чтобы всех сотрудников, даже тех, кто не находится в таблице salary, тогда подходит внешнее объединение -но employee должно быть первым:

select e.id_employee, sum(s.salary) as salary
from employee e left join
     salary s
     on s.employee_id = e.id_employee
group by e.id_employee;

Сотрудники, не входящие в salary, будут иметь значение NULL.

Обратите внимание, что условие group by в этом запросе включеноemployee, первая таблица в left join.

0 голосов
/ 06 октября 2018
select employee_id, SUM(salary) as salary
from salary
left join employee on salary.employee_id=employee.id_employee
group by emplyee_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...