1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xuthus5-Database-SQL-Actual-Combat

Клонировать/Скачать
22.统计各个部门对应员工涨幅的次数总和.md 1.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 00:53 c66e7df

Подсчет количества повышений зарплат сотрудников в каждом отделе

Описание задачи

Подсчитайте количество повышений зарплат сотрудников в каждом отделе, предоставив код отдела dept_no, название отдела dept_name и общее количество повышений sum.

CREATE TABLE `departments` (
`dept_no` char(4) NOT NULL,
`dept_name` varchar(40) NOT NULL,
PRIMARY KEY (`dept_no`)
);
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`)
);
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`)
);

Ответ

SELECT dept_no, dept_name, SUM(sum) AS sum FROM (SELECT emp_no, d.dept_no, dept_name FROM dept_emp de LEFT JOIN departments d ON de.dept_no = d.dept_no) info INNER JOIN (SELECT emp_no, COUNT(salary) AS sum FROM salaries s GROUP BY emp_no) s ON info.emp_no = s.emp_no GROUP BY dept_no

Объяснение решения

  1. Вычисление количества повышений зарплат для каждого сотрудника s:
-- Количество повышений зарплат
(SELECT emp_no, COUNT(salary) AS count FROM salaries s GROUP BY emp_no) s
  1. Создание таблицы с информацией о сотрудниках и их отделах info:
-- Информация об отделах
(SELECT emp_no, d.dept_no, dept_name FROM dept_emp de LEFT JOIN departments d ON de.dept_no = d.dept_no) info
  1. Объединение таблиц info и s, группировка по dept_no и вычисление суммы повышений для каждого отдела.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xuthus5-Database-SQL-Actual-Combat.git
git@api.gitlife.ru:oschina-mirror/xuthus5-Database-SQL-Actual-Combat.git
oschina-mirror
xuthus5-Database-SQL-Actual-Combat
xuthus5-Database-SQL-Actual-Combat
master