Хорошо, еще один вопрос по SQL.То, чего я пытаюсь добиться, - это показать по компании, какие курсы их сотрудников прошли, и оттуда, что является наиболее популярным для каждой компании.
В настоящее время это то, что у меня есть:
SELECT a.corporatename, e.course_title, b.studentID FROM корпоративный a
JOIN студенты b ON a.corporateID = b.corporateID
JOIN детали ученического курса c ON b.studentID = c.studentID
JOIN детали класса d ON c.classdetailID = d.classdetailID
JOIN курс e ON d.courseID = e.courseID
WHERE b.corporateID! = '0 '
ORDER BY a.corporatename, e.course_title
Это дает мне что-то вроде этого:
corporatename
----------------------------- course_title
--------------------------------- studentID
Deutsche Lufthansa AG Berlin
----- Airline Security Operations
--------- 5
Deutsche Lufthansa AG Berlin
----- Airline Security Operations
--------- 6
Deutsche Lufthansa AG Berlin
----- Airline Security Operations
--------- 5
Deutsche Lufthansa AG Berlin
----- Workshop on Crisis Management
------ 6
Deutsche Lufthansa AG Berlin
----- Workshop on Crisis Management
------ 7
Korean Air Lines Co., Ltd
---------- Airline Security Operations
--------- 8
Из вышесказанного видно, что Lufthansa отправила своих сотрудников 2курсы пока что.Даже если studentID
5 дважды посещал определенный курс, поскольку он провалил первую попытку, это записывается как 2 записи.
Я надеюсь достичь следующего:
Deutsche Lufthansa AG Berlin
----- Airline Security Operations
--------- 3
Deutsche Lufthansa AG Berlin
----- Workshop on Crisis Management
------ 2
Korean Air Lines Co., Ltd
---------- Airline Security Operations
--------- 1
Я пытался использовать этот код:
SELECT a.corporatename, e.course_title, count (DISTINCT b.studentID) AS всего
ОТ корпоративный а
ПРИСОЕДИНЯЙТЕСЬ учеников б ВКЛ 1105 * ON b.studentID = c.studentID
JOIN classdetails d ON c.classdetailID = d.classdetailID
JOIN курсe ON d.courseID = e.courseID
ГДЕ b.corporateID! = '0'
GROUP BY a.corporatename
ЗАКАЗАТЬ a.corporatename, e.course_title
Но что я получил:
corporatename
----------------------------- course_title
--------------------------------- total
Deutsche Lufthansa AG Berlin
----- Workshop on Crisis Management
------ 3
Korean Air Lines Co., Ltd
---------- Airline Security Operations
--------- 1
это показывает мне самый популярный, да, но я бы хотелчтобы иметь возможность сравнивать все ранги.
Буду признателен за любую помощь в этом.
Благодаря bluish
, простое решение.
SELECT a.corporatename, e.course_title, count (b.studentID) AS всего
ОТ корпоративный a
JOIN студенты b ON a.corporateID = b.corporateID
JOIN studentcoursedetails c ON b.studentID = c.studentID
JOIN classdetails d ON c.classdetailID = d.classdetailID
JOIN курс e ON d.courseID = e.courseID
WHERE b.corporateID! = '0'
GROUP BY a.corporatename, e.course_title
ORDER BY a.corporatename, e.course_title
Я удалил DISTINCT
, потому что мне нужно собирать данные обо всех зачислениях, а не о каждом уникальном пользователе.Спасибо.