2010-11-28 47 views
1

修訂日期: 好吧,感謝您的所有意見,我找出了我做錯了什麼(對不起,夥計們)。我抓住courseID並不是真正的課程。對於我來說,抓住實際的courseName,我必須去課程表。計數內計數

所以現在我有來自課程的註冊和課程號的StudentID需要用來計數。我會試着和你們提供的東西一起工作,看看我能不能拿出結果。編輯: 這是我修改後的SQL。這爲我提供了每個學生的全部課程。我越來越有:

SELECT  Count(DISTINCT Course.courseNum), Grades.studentID 
FROM   Grades INNER JOIN 
      Course ON Grades.courseID = Course.courseID 
      GROUP BY Grades.studentID; 

終極密碼,以防萬一那些誰照顧:

SELECT COUNT(NumCourses) FROM 
(SELECT  Count(DISTINCT Course.courseNum)AS NumCourses 
FROM   Grades INNER JOIN 
         Course ON Grades.courseID = Course.courseID 
        GROUP BY Grades.studentID 
      HAVING Count(DISTINCT Course.courseNum) = 1) a; 
+0

你只需要在課程表中添加一個內部連接並在該表上執行having子句。 – IamIC 2010-11-28 09:05:02

+0

如果您覺得您的問題已得到解答,您應該接受答案。 – Martin 2010-11-28 20:39:35

+0

你應該使用投票系統。 – IamIC 2010-11-29 06:14:12

回答

1

要獲得總數的4+課程的學生,這是SQL:

SELECT COUNT(CourseCount) AS CourseCount 
FROM (
    SELECT StudentID, COUNT(CourseID) AS CourseCount 
      FROM enrollment 
      GROUP BY StudentID 
      HAVING (COUNT(CourseID) >= 4)) AS T 

使用第二個查詢獲得學生數量要簡單得多。

3

試試這個:

select count(studentId), count(courseId) from enrolment group by courseId having (count(courseId) = 2); 
+0

給我所有4s。 – OneSneakyMofo 2010-11-28 08:20:51

0
SELECT COUNT(*) FROM 
    (SELECT COUNT(*) FROM enrollment 
    GROUP BY studentid HAVING COUNT(*) = 4) 
0
SELECT COUNT(NumCourses) AS NumStudents, NumCourses FROM (SELECT COUNT(courseID) AS NumCourses FROM enrollment GROUP BY courseID HAVING COUNT(courseID) = 4) As SomeTableAlias 
0

我以爲你想要參加四門課程的學生人數。 如果要算學生人數和課程的數量,這樣做:

SELECT * FROM (SELECT COUNT(*) AS NumStudents FROM (SELECT DISTINCT studendid FROM enrollment)), (SELECT COUNT(*) AS NumCourses FROM (SELECT DISTINCT courseid FROM enrollment)) 
0
select count(*) 
    from (select student_id from enrollment group by student_id having count(*) = 4)

內部查詢給你誰在完全相同4門課程入選然後我算他們的學生的ID。