Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数一数二_Sql_Oracle_Count - Fatal编程技术网

Sql 数一数二

Sql 数一数二,sql,oracle,count,Sql,Oracle,Count,修订: 好的,多亏了你们的投入,我才知道我做错了什么(对不起,伙计们)。我正在抓取courseID,它算作一个部分,而不是一个实际的课程。要想得到真正的课程名称,我必须去课程表 所以现在我有了注册中的StudentID和课程中的CourseNum,需要用来计算。我会尝试和你们提供的一起工作,看看我是否能得出结果 编辑: 这是我修改过的SQL。这为我提供了每个学生的全部课程。我就要到了: SELECT Count(DISTINCT Course.courseNum), Grades.stu

修订: 好的,多亏了你们的投入,我才知道我做错了什么(对不起,伙计们)。我正在抓取courseID,它算作一个部分,而不是一个实际的课程。要想得到真正的课程名称,我必须去课程表

所以现在我有了注册中的StudentID和课程中的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;
试试这个:

select count(studentId), count(courseId) from enrolment group by courseId having (count(courseId) = 2);
试试这个:

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

要获取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

使用第二个查询获取学生人数要简单得多。

要获取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

使用第二个查询获取学生人数要简单得多。

我以为您想要的是注册四门课程的学生人数。 如果要计算学生人数和课程数量,请执行以下操作:

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

我以为你想要的是四门课程的学生人数。 如果要计算学生人数和课程数量,请执行以下操作:

SELECT * FROM (SELECT COUNT(*) AS NumStudents FROM (SELECT DISTINCT studendid FROM enrollment)), (SELECT COUNT(*) AS NumCourses FROM (SELECT DISTINCT courseid FROM enrollment))
内部查询为您提供了恰好注册了4门课程的学生的ID,然后我统计他们



内部查询为您提供了恰好注册了4门课程的学生的ID,然后我统计他们。

现在试试。我去掉了断线。我只是再次尝试了这个查询,它对我来说很好。对不起,在这方面我帮不了你。它在MySQL上对我来说很好。Oracle可能需要对查询格式稍作修改。最后删除了AS,它为我提供了numStudents 4 NumCourses 4。请立即尝试。我去掉了断线。我只是再次尝试了这个查询,它对我来说很好。对不起,在这方面我帮不了你。它在MySQL上对我来说很好。Oracle可能需要对查询格式进行一些细微的修改。最后删除了AS,它为我提供了numStudents 4 NumCourses 4。这看起来可以做到这一点。但最后我不得不去掉AS T。把它擦掉。我删除了>=4,将其替换为=4,它为我提供了4。>=4将为您提供4门或更多课程的学生。4只会给你4个。你挑吧。无论哪种方式,这是正确的代码给你想要的结果。我只需要4门课程的学生。为什么它只给我4个?在你的注册表中有多少学生有4个唯一的课程ID?这个查询只是计算每个学生ID的CourseID数。如果上面写的是4,那么只有4个学生有4门课。这看起来很有效。但最后我不得不去掉AS T。把它擦掉。我删除了>=4,将其替换为=4,它为我提供了4。>=4将为您提供4门或更多课程的学生。4只会给你4个。你挑吧。无论哪种方式,这是正确的代码给你想要的结果。我只需要4门课程的学生。为什么它只给我4个?在你的注册表中有多少学生有4个唯一的课程ID?这个查询只是计算每个学生ID的CourseID数。如果上面写着4,那么只有4个学生有4门课,你是对的。我需要四个班级的学生人数,所以我的第一个解决方案和sh_kamalh的解决方案(相同)应该可以解决这个问题。如果你的结果是3,但预期为190,那么你的数据可能有问题。你是对的。我需要四个班级的学生人数,所以我的第一个解决方案和sh_kamalh的解决方案(相同)应该可以解决这个问题。如果结果是3,但预期为190,您的数据可能有问题。您只需要向课程表添加一个内部联接,并在该表上执行having子句。如果您觉得您的问题已得到回答,您应该接受答案。您应该使用投票系统。最后的代码不符合您最初的要求:返回参加4个课程的人。那是怎么回事?您的最终查询也可以优化一点。我已经修复了它。应该是计数而不是求和。我用1进行测试,因为我知道一门课上到底有多少学生。谢谢。你只需要在课程表中添加一个内部联接,并在该表中执行having子句。如果你觉得你的问题已经得到了回答,你应该接受答案。你应该使用投票系统。最终的代码不符合你最初的要求:返回那些参加4门课程的人。那是怎么回事?您的最终查询也可以优化一点。我已经修复了它。应该是计数而不是求和。我用1进行测试,因为我知道一门课上到底有多少学生。谢谢