Извлечение данных из трех таблиц; Попытка перечислить номер проекта, название проекта и отработанные часы для проектов, над которыми работает сотрудник

#sql #count #inner-join

#sql #количество #внутреннее соединение

Вопрос:

Предоставлено, что это из задания, и в инструкциях неясно, следует ли мне указывать идентификатор сотрудника, однако я предполагаю, что я должен (если у кого-то нет другой интерпретации?).

Это код, который у меня есть в настоящее время:

 select e.ssn, p.pnumber, p.pname, count(hours) hours_worked
from works_on w
inner join project p on w.pno = p.pnumber
inner join employee e on w.essn = e.ssn
group by e.ssn, p.pnumber, p.pname
order by e.ssn, hours_worked desc;
 

Я получаю список, показывающий всех сотрудников, работающих над каждым проектом, но hours_worked всегда равен 1. Я пытаюсь считать из столбца часов в таблице works_on, но, похоже, это не работает.

Заранее благодарю вас за помощь!

Ответ №1:

может быть, вам нужна сумма

 select e.ssn, p.pnumber, p.pname, sum(hours) hours_worked
from works_on w
inner join project p on w.pno = p.pnumber
inner join employee e on w.essn = e.ssn
group by e.ssn, p.pnumber, p.pname
order by e.ssn, hours_worked desc;
 

count используется для получения количества ненулевых значений, содержащихся в столбце

Комментарии:

1. О, я тупой, ха-ха-ха, большое тебе спасибо! Застрял на этом примерно на два дня — абсолютно сделал мой день. Еще раз спасибо!