2017-02-07 1 views
1

Существует две таблицы: works_on и project. Проект содержит следующие атрибуты: PName, PNo, PLocation и DNo (номер отдела). Works_on содержит следующие атрибуты: SSN, PNo, часы.Список номеров проектов, название проекта и количество сотрудников для всех проектов> 2 сотрудника, работающие над ним

Я хочу только считать SSN, которые появляются более двух раз, а затем предоставить значение count, PName и PNo.

Это моя попытка до сих пор:

SELECT 
    P.PNo, P.PName, 
    COUNT(W.SSN) AS no_employees 
FROM 
    project AS P INNER JOIN works_on AS W ON P.PNO = W.PNo 
WHERE W.SSN IN (SELECT SSN FROM WORKS_ON GROUP BY SSN HAVING COUNT(SSN) > 2) 
GROUP BY P.PNo 

, но я получаю неправильный ПНО-х и неправильное количество сотрудников. Я пытался выяснить, почему этот код не даст мне проектов с более чем двумя сотрудниками. Пожалуйста, помогите мне выяснить, что я делаю неправильно.

ответ

2

Вам не нужно внутренний запрос, group by с having должен делать, например .:

SELECT p.no, p.name, COUNT(w.ssn) as employees 
FROM project p JOIN works_on w ON p.pno = w.pno 
GROUP BY p.no, p.name 
HAVING employees > 2; 
+0

Спасибо так много! – mathStudent1936

+0

Все еще не уверен, почему мы делаем домашнее задание. Была ли эта часть задания? – Strawberry

+0

Я занимаюсь этим несколько часов, поэтому, думаю, обратившись сюда, я не прошу вас делать домашнее задание, но вместо этого просите о прозрении или помощи. Я новичок в SQL и стараюсь учиться на своих ошибках. Я действительно не знаю, почему вы тратите время на наше время, не предлагая никакой помощи. – mathStudent1936

Смежные вопросы