Управление таблицей sql, чтобы получить сотрудников, которые перебронированы за день - PullRequest
0 голосов
/ 09 октября 2018

У меня есть 3 таблицы

1. Employees (empid, lname, fname, emptype, cellphone, homphone, ftpt)
2. Schedule(date, empid, dept_name, start_time, shift_length)
3. Departments(dept_name, dept manager)`

Мы должны сгенерировать таблицу, в которой перечислены все сотрудники, которые перебронированы по расписанию более одного раза в день.

Последняя таблица после оператора выбора должна выглядеть следующим образом:

она упорядочена по идентификатору сотрудника.

Вот таблица создания для 3 таблиц:

CREATE TABLE Departments(department_name VARCHAR(30));
CREATE TABLE Employees(empid int PRIMARY KEY NOT NULL, lname VARCHAR(20) NOT NULL, fname VARCHAR(20) NOT NULL, emptype VARCHAR(5) NOT NULL, cellphone VARCHAR(20), homephone VARCHAR(20), ftpt VARCHAR(3) NOT NULL);
CREATE TABLE Schedule(date VARCHAR(20) NOT NULL, empid INT NOT NULL, department VARCHAR(30) NOT NULL, start_time VARCHAR(5) NOT NULL, shift_length INT NOT NULL );

Пример данных Расписание СОТРУДНИКИ

Файлы с данными- https://drive.google.com/drive/folders/1hSf4rbGOvqrTZVyPaveF6fUAKB29Q2o_?usp=sharing

1 Ответ

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

Некоторые из названий столбцов, которые вы указали, противоречивы, поэтому вам может потребоваться изменить некоторые из них, чтобы они соответствовали тому, что на самом деле находится в вашей базе данных.Но это должно помочь вам начать.

SELECT empid, lname as lastName, fname as firstName, date as [OVERBOOKED DATE], start_time as sfrom, Departments.dept_name as dname, dept_manager as MANAGER FROM Employees JOIN Schedule ON Employees.empid=Schedule.empid JOIN Departments on Schedule.dept_name=Departments.dept_name WHERE empid IN (SELECT empid FROM Schedule WHERE COUNT(*) > 1 GROUP BY date, empid)
...