首页 文章

SQL:在列出min,max,average,count时遇到问题

提问于
浏览
0

[1]:https://i.stack.imgur.com/R5Pzz.png我正在尝试列出每个assignmentID的最小值,最大值,平均值和计数 . 我用来创建图片中显示的代码如下:

SELECT assignment.assignmentID, assignment.assignmentName, grade.grade

FROM grade 

JOIN assignment ON grade.assignmentID = assignment.assignmentID

当我将最小值,最大值,平均值,计数添加到SELECT函数时,它只返回赋值ID的结果1.我怎样才能让它为所有赋值执行它

2 回答

  • 0

    我相信你想:

    SELECT a.assignmentID, a.assignmentName,
           COUNT(*) as numgrades, MIN(g.grade), MAX(g.grade), AVG(g.grade)
    FROM assignment a JOIN
         grade g
         ON g.assignmentID = a.assignmentID
    GROUP BY a.assignmentID, a.assignmentName;
    

    您的查询缺少 GROUP BY 和聚合函数 . 这假设 grade 是数字,所以 AVG() 是有意义的 .

    请注意,我还引入了表别名,因此查询更容易编写和读取 .

  • 0

    's because you'不按分配记录分组 . 使用group by在每个分配的基础上执行聚合:

    select assignment.assignmentID, assignment.assignmentName,
        count(*) as gradeCount, avg(grade.grade) as avgGrade,
        min(grade.grade) as minGrade, max(grade.grade) as maxGrade
    from assignment, grade
    where assignment.assignmentID = grade.assignmentID
    group by assignment.assignmentID, assignment.assignmentName
    

相关问题