Хорошо, еще один вопрос SQL. То, что я пытаюсь достичь, - это показать компании, которая учит своих сотрудников, и оттуда, которая является самой популярной для каждой компании.
В настоящее время, это то, что у меня есть:Рейтинг SQL на 2 уровнях
ВЫБРАТЬ a.corporatename, e.course_title, b.studentID ОТ корпоративной
РЕГИСТРИРУЙТЕСЬ студентов б ON a.corporateID = b.corporateID
РЕГИСТРИРУЙТЕСЬ studentcoursedetails гр ПО b.studentID = c.studentID
РЕГИСТРИРУЙТЕСЬ classdetails d ON c.classdetailID = d.classdetailID
РЕГИСТРИРУЙТЕСЬ курс е ON d.courseID = e.courseID
WHERE b.corporateID! = '0'
ЗАКАЗ 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
----- 10 ------ 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, граф (DISTINCT b.studentID) А.С. общая
ОТ корпоративной
РЕГИСТРИРУЙТЕСЬ студентов б ПО a.corporateID = b.corporateID
РЕГИСТРИРУЙТЕСЬ studentcoursedetails гр ПО b.studentID = c.studentID
РЕГИСТРИРУЙТЕСЬ classdetails d ПО c.classdetailID = d.classdetailID
РЕГИСТРИРУЙТЕСЬ курс е ON d.courseID = e.courseID
ГДЕ b.corporateID! = '0'
GROUP BY a.corporatename
ORDER BY a.corporatename, е. 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
, простое решение.
ВЫБОР a.corporatename, e.course_title, граф (b.studentID) А.С. общей
ОТ корпоративного
РЕГИСТРИРУЙТЕСЬ студентов б ПО a.corporateID = Ь. corporateID
JOIN studentcoursedetails c ON b.studentID = c.studentID
РЕГИСТРИРУЙТЕСЬ classdetails d ON c.classdetailID = d.classdetailID
РЕГИСТРИРУЙТЕСЬ курс е ON d.courseID = e.courseID
ГДЕ b.corporateID! = '0'
GROUP BY a.corporatename, e.course_title
ORDER BY a.corporatename, e.course_title
Я удалил DISTINCT
, потому что мне нужно собирать данные всех зачислений, а не каждого уникального пользователя. Благодарю.
В любом случае, если вы используете 'COUNT (DISTINCT b.studentID)', Deutsche Lufthansa AG Берлин - Операции безопасности авиакомпании получат 2, а не 3, как вы сказал, что хочешь. Может быть, среди 'DISTINCT' и' 3' ошибочно. – bluish