2013-04-04 3 views
0

Мне трудно показать число классов в столбце, который студент принимает.SQL Student Database

У меня есть следующий запрос, но я не уверен, что именно COUNT рассчитывает и как отобразить счетчик для каждого студента:

CREATE VIEW Busy_Student AS 
SELECT First_Name, Last_Name, Student.Student_ID 
FROM Student 
INNER JOIN Enrollment ON Enrollment.Student_ID= Student.Student_ID 
GROUP BY Student.Student_ID, Student.First_Name, Student.Last_Name 
HAVING COUNT(*) > 2 

Создайте BUSY_STUDENT вида вызова, которая хранит сцепленное имя (первым имя и фамилия), идентификатор студента и количество участвующих классов, для всех студентов, обучающихся более чем в 2 классах. Назовите столбцы, FULL_NAME, STUDENT_ID и ENROLL_NUM соответственно.

+0

Это домашнее задание? – Barranka

+0

Можете ли вы [изменить] свой вопрос добавить тег для используемой СУБД (операторы конкатенации различаются между собой) и некоторую информацию о определениях таблиц? Тем не менее, ваш 'SELECT' не делает ничего, чтобы обеспечить« конкатенированное имя », поскольку вы не объединяете их (объединяя имя и фамилию в одном столбце« first_name last_name », обычно присваиваемое псевдонимом имя типа« student_name » "или" full_name "), и если вы собираетесь показать« количество зарегистрированных классов », вам нужно добавить' COUNT (*) 'в ваш оператор' SELECT'. –

+0

@anakata: «будьте более ясны» о чем? Если вы собираетесь прокомментировать вопрос, пожалуйста, будьте более ясным * о том, что вы просите человека объяснить более четко. Ваш комментарий не имеет смысла, если вы не объясните, что им нужно, чтобы «быть более ясным» в вопросе. –

ответ

0

Ваше ВЫБРАТЬ заявление должно быть что-то вроде этого:

SELECT First_Name + ' ' + Last_Name AS [FULL_NAME], 
Student.Student_ID, COUNT(*) AS [ENROL_NUM] 
FROM Student 
INNER JOIN Enrollment ON Enrollment.Student_ID= Student.Student_ID 
GROUP BY Student.Student_ID, Student.First_Name, Student.Last_Name 
HAVING COUNT(*) > 2 
0

Вы довольно близко к нему:

CREATE VIEW Busy_Student AS 
SELECT 
    CONCAT(First_Name, ' ', Last_Name) AS FULL_NAME, 
    Student.Student_ID AS STUDENT_ID, 
    COUNT(Enrollment.Enrollment_id) AS ENROLL_NUM 
FROM Student 
INNER JOIN Enrollment USING(Student_ID) 
GROUP BY Student.Student_ID 
HAVING ENROLL_NUM > 2 

Отсчет производится по количеству Enrollment строк, соответствующих студенческому билету. Поскольку вы только указали внутреннюю колонку объединения, я сделал предположение, что каждая каждая регистрация была однозначно идентифицирована столбцом Enrollment_id. Вы должны настроить это имя столбца в соответствии с вашей схемой.

Использование

First_Name + ' ' + Last_Name AS FULL_NAME 

для SQL Server.