2010-11-28 23 views
1

REVISED : 모든 입력 사항 덕분에, 내가 뭘 잘못하고 있었는지 알아 냈습니다 (미안 해요). 나는 실제 코스가 아닌 섹션으로 간주되는 코스 ID를 얻고 있습니다. 실제 courseName을 잡으려면 Course Tables (코스 테이블)로 가야합니다.카운트 내에서 카운트

그래서 이제는 등록 할 때 StudentID를 받고 Course에서 CourseNum을 사용하여 계산해야합니다. 제가 결과를 생각해 낼 수 있는지 알아보기 위해 여러분이 제공 한 것과 함께 노력하고 노력할 것입니다.

편집 : 내 수정 된 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

+0

질문에 답변 한 것으로 생각되면 답변을 수락해야합니다. – Martin

+0

투표 시스템을 사용해야합니다. – IamIC

답변

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 

두 번째 쿼리를 사용하여 학생 수를 계산하는 것이 훨씬 쉽습니다.

+0

트릭을 수행합니다. 결국 AS T를 제거해야했습니다. – OneSneakyMofo

+0

긁힘. 나는 = 4를 = 4로 대체하고 4를주었습니다. – OneSneakyMofo

+0

다행이었습니다. "AS T"는 SQL Server의 것입니다. – IamIC

3

을 시도해보십시오이 :

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

모두 4 개를 제공합니다. – OneSneakyMofo

0
SELECT COUNT(*) FROM 
    (SELECT COUNT(*) FROM enrollment 
    GROUP BY studentid HAVING COUNT(*) = 4) 
+0

나를 3 길을, LOL을 준다. – OneSneakyMofo

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

나에게 오류를 던져 : SQL 제대로 끝나지 않았다. – OneSneakyMofo

+0

지금 사용해보세요. 줄 바꿈을 제거했습니다. 방금 쿼리를 다시 시도했지만 제대로 작동했습니다. – bowsersenior

+0

ORA-00933 : SQL 명령이 올바르게 종료되지 않았습니다. – OneSneakyMofo

0

정확하게 네 과목에 등록한 학생 수가 필요하다고 생각했습니다. 당신이 학생의 수와 과목의 수를 계산하려면 다음을 수행

SELECT * FROM (SELECT COUNT(*) AS NumStudents FROM (SELECT DISTINCT studendid FROM enrollment)), (SELECT COUNT(*) AS NumCourses FROM (SELECT DISTINCT courseid FROM enrollment)) 
+0

정확합니다. 정확히 4 개의 반에 등록한 학생이 필요합니다. – OneSneakyMofo

+0

내 첫 번째 솔루션과 sh_kamalh (동일 함) 중 하나가 트릭을 수행해야합니다. 결과로 3 점을 얻었지만 190 점을 예상하면 데이터에 이상이있을 수 있습니다. –

0
select count(*) 
    from (select student_id from enrollment group by student_id having count(*) = 4)

내부 쿼리가 당신에게 내가 그들을 계산 한 후 정확히 4 과목에 등록한 학생의 ID를 제공합니다.