Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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中使用多个内置函数时如何使用group by_Sql_Oracle - Fatal编程技术网

在SQL中使用多个内置函数时如何使用group by

在SQL中使用多个内置函数时如何使用group by,sql,oracle,Sql,Oracle,我想写一个查询,列出课程总学分最高的学生。结果还应显示学生注册的课程数量以及最高总学分 我的问题是 SELECT COUNT(COUNT(COURSE.COURSE_NO)) AS "Number of courses", MAX(SUM(COURSE.CREDITS)) AS "Total Credits" FROM STUDENT JOIN ENROLLMENT ON ENROLLMENT.S_ID = STUDENT.S_ID JOIN COURSE_SECTION ON COUR

我想写一个查询,列出课程总学分最高的学生。结果还应显示学生注册的课程数量以及最高总学分

我的问题是

SELECT 
COUNT(COUNT(COURSE.COURSE_NO)) AS "Number of courses", 
MAX(SUM(COURSE.CREDITS)) AS "Total Credits"
FROM 
STUDENT
JOIN ENROLLMENT 
ON ENROLLMENT.S_ID = STUDENT.S_ID
JOIN COURSE_SECTION
ON COURSE_SECTION.C_SEC_ID = ENROLLMENT.C_SEC_ID
JOIN COURSE
ON COURSE.COURSE_NO = COURSE_SECTION.COURSE_NO
GROUP BY STUDENT.S_ID;
结果是:

Number of courses Total Credits
----------------- -------------
            6            21
属于某个学生的

如何显示学生ID和结果?当我将STUDENT.S_ID放入SELECT子句时,它会触发一个错误“非单个组函数”。

我相信您希望:

SELECT e.*
FROM (SELECT e.S_ID
             COUNT(*) as num_courses,
             SUM(c.CREDITS) AS total_credits,
             RANK() OVER (ORDER BY SUM(c.CREDITS)) as seqnum
      FROM ENROLLMENT e JOIN
           COURSE_SECTION cs
           ON cs.C_SEC_ID = e.C_SEC_ID JOIN
           COURSE c
           ON c.COURSE_NO = cs.COURSE_NO
      GROUP BY e.S_ID
     ) e
WHERE seqnum = 1;
这将返回具有最大学分数的所有学生。毕竟,这样的学生可能不止一个

其他说明:

  • 表别名使查询更易于编写和读取
  • 不需要表
    STUDENTS
    ,因为学生id位于
    ENROLLMENT
  • 使用简单的列别名,因此不必转义名称

使用子查询。每个查询级别一步聚合函数。在内联视图中列出两次“total_credits”。还有,你的排名应该上升吗?我可能遗漏了什么。戈登·林诺夫我使用oracle,我也试过运行你的查询,但它会吐出错误。@ryanthonpson。我认为问题在于列别名的输入错误。