#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. О, я тупой, ха-ха-ха, большое тебе спасибо! Застрял на этом примерно на два дня — абсолютно сделал мой день. Еще раз спасибо!