У меня есть запрос, который возвращает три столбца правильно. Я не могу понять, как добавить следующий столбец, в котором SUM () представляет данные, используя только результаты LEFT JOIN.
Вот исходный запрос, который возвращает правильные три столбца:
select TITLES.NAME,
COUNT(progskills.skill_no) as B,
COUNT(ss.skill_no) as A,
SUM(ss.score) as C
FROM TITLES
inner join progskills
on progskills.program_no = titles.title_no
left join STUSKILLS ss
on progskills.SKILL_NO = ss.skill_no
and ss.STUDENT_NO = '1234'
where progskills.program_no in (select progskills.program_no
from PROGSKILLS, STUSKILLS
where progskills.SKILL_NO = stuskills.SKILL_NO
and stuskills.SCORE != 0
and stuskills.STUDENT_NO = '1234')
group by titles.name
, который правильно возвращает следующие результаты:
B A C
Database Administration 4 1 50
Implementation Specialist 4 1 50
Office Manager 4 2 130
Registrar 4 2 130
Scheduler 4 3 130
Scheduling Assistant 2 1 50
Support Systems Manager 4 2 130
В четвертом столбце я пытаюсь суммировать столбец с именем MINSCORE из таблицы PROGSKILLS, основываясь на результатах левого соединения STUSKILLS. Другими словами, я хочу суммировать только те элементы, на которые ссылается левое соединение.
Я перепробовал много попыток, но все, похоже, либо не соответствуют синтаксису, либо приводят к умножению результатов в других столбцах данных.
Мое лучшее предположение - добавить следующее в мое основное предложение SELECT ...
SUM(select ps.minscore from PROGSKILLS ps where ps.SKILL_NO = ss.skill_no) as D
Но SQL жалуется, что SUM (SELECT является синтаксической ошибкой и ss.skill_no не может быть привязан.
Я знаю, что СУММА (ВЫБОР допустим.
Я понимаю, что это очень сложный запрос, но я надеюсь, что кто-то может помочь мне выяснить, как получить данные из PROGSKILLS на основе элементов, подсчитанных в столбце "A".
Заранее ... СПАСИБО!