Как подсчитать результаты выбора в SQL - PullRequest
1 голос
/ 30 апреля 2020

Мне был задан следующий вопрос для задания

Напишите заявление SQL, чтобы показать сумму отработанных часов для каждого типа ВЛАДЕЛЬЦА, но исключить услуги сотрудников, которые имеют уровень опыта младшего и исключить любые Тип владельца с числом членов менее четырех

Мне трудно понять, как выполнить sh последнюю часть вопроса. Я считаю, что это потребует подсчета части отборного утверждения, но я не уверен, как это сделать.

Пока что вот что у меня есть:

 SELECT SUM(HoursWorked), OwnerType 
 FROM PROPERTY_SERVICE 
 JOIN EMPLOYEE ON EMPLOYEE.EmployeeID=PROPERTY_SERVICE.EmployeeID
 JOIN OWNED_PROPERTY ON OWNED_PROPERTY.PropertyID = PROPERTY_SERVICE.PropertyID
 INNER JOIN OWNER ON OWNER.OwnerID=OWNED_PROPERTY.OwnerID 
 WHERE NOT EMPLOYEE.ExperienceLevel='Junior' 
 *This is where I believe the solution should go*
 GROUP BY OWNER.OwnerType;

1 Ответ

0 голосов
/ 30 апреля 2020

Предположительно, вам просто нужно предложение HAVING:

SELECT SUM(HoursWorked), o.OwnerType 
FROM PROPERTY_SERVICE ps
JOIN EMPLOYEE e        ON e.EmployeeID  = ps.EmployeeID
JOIN OWNED_PROPERTY op ON op.PropertyID = ps.PropertyID
INNER JOIN OWNER o     ON o.OwnerID     = op.OwnerID 
WHERE e.ExperienceLevel <> 'Junior' 
GROUP BY o.OwnerType
HAVING COUNT(*) < 4

Это исключает группы строк с одинаковым OwnerType, которые содержат менее 4 строк. Возможно, вам придется настроить выражение в соответствии с вашим точным определением member .

Обратите внимание, что я добавил псевдонимы таблиц в запрос, чтобы было проще читать и писать. Я также рекомендовал бы ставить перед столбцом HoursWorked таблицу, к которой он принадлежит, чтобы избежать двусмысленности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...